连接
function client(){
try {
$client = ClientBuilder::create()
->setHosts(['https://127.30.0.1:9200'])
->setSSLVerification(false) // 禁用 SSL 证书验证
->setBasicAuthentication('账号', '密码')
->build();
// 检查连接是否成功
$response = $client->ping();
if ($response) {
return $client;
} else {
echo "连接失败";exit();
}
}catch (\Exception){
return false;
}
}
索引
文本类型
text:用于全文搜索,会被分析器分词。
keyword:用于精确值,不会被分析器分词,适用于过滤、排序、聚合。
数值类型
long:64位整数。
integer:32位整数。
short:16位整数。
byte:8位整数。
double:64位双精度浮点数。
float:32位单精度浮点数。
half_float:16位半精度浮点数。
scaled_float:缩放的浮点数,用于精确的小数但不需要完整的double精度。
日期和时间类型
date:包含日期的字段,可以解析多种日期格式。
布尔类型
boolean:布尔值(true或false)。
二进制类型
binary:接受一个base64编码的字符串,Elasticsearch不会对其进行索引。
范围类型
integer_range、float_range、long_range、double_range、date_range:用于存储一个范围的值,如开始日期和结束日期。
具体索引建立
//建立索引的字段根据自己的实际情况建立
$error_collection_indices = [
'unique_id' => ['type' => 'keyword'],//错误id
'state' => ['type' => 'integer'],//状态
'error_type' => ['type' => 'keyword'],
'operation_records' => ['type' => 'text'],操作记录
'create_time' => ['type' => 'integer'],//创建时间
'update_time' => ['type' => 'integer'],///更新
];
//判断索引存不存在 不存在则去创建
if (!indices_exists_index($client,$indexName)){
$params = [
'index' => $indexName,
'body' => [
'mappings' => [
'properties' => $data
]
]
];
$res = $client->indices()->create($params);
if ($res->getStatusCode() =='200'){
return true;
}else{
return false;
}
}
操作
插入
$data 插入数据
$indexName 索引(我的理解类似于表名,但是这在官方解释是索引)
function install($client,$data,$indexName){
try {
$params = [
'index' => $indexName,
'body' => $data
];
$response = $client->index($params);
if ($response->getStatusCode() =='201'){
return $response->asArray();
}
return false;
}catch (\Exception){
return false;
}
}
删除
索引删除
function indices_delete_index($client,$indexName){
try {
$res = $client->indices()->delete(['index' => $indexName]);
if ($res->getStatusCode() == '200') {
return true;
} else {
return false;
}
}catch (\Exception){
return false;
}
}
查询
/**
* 查询
* @param $client
* @param $query
* @param $indexName
* @return false|mixed
*/
function query($client,$query,$indexName){
try {
$params = [
'index' => $indexName,
'body' => $query,
];
$response = $client->search($params);
if ($response->getStatusCode() =='200'){
return $response->asArray();
}
return false;
}catch (\Exception){
return false;
}
}