四、ElasticSearch - PHP 操作 ES 搜索学习(完)
hi,我是温新,一名 PHPer
ES 版本:ElasticSearch 8.6.0
系统版本:Rocky Linux 9.1
学习目标:学会 PHP 中依据什么来搜索
本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!
PHP Elasticsearch 写法与 Elasticsearch 保持一致,不同点在于 Elasticsearch 使用的是 JSON 结构,而 PHP 中则需要转成数组。
PHP ES 查询差异性
ES 查询语法
GET php_articles/_search
{
"query": {
"match": {
"title": "学习"
}
}
}
PHP ES 中的写法
$params = [
'index' => 'index_name', // 索引名
//body保存es 请求体内容, 这里的内容跟es查询语法保持一致,区别就是需要转成php数组格式
'body' => [
// 这里的内容跟上面查询语法一致
'query' => [
'match' => [
'testField' => 'value'
]
]
]
];
// 通过search执行查询请求。
$results = $client->search($params);
PHP ES 处理搜索结果
// 查询匹配
$search = [
'index' => 'php_articles',
'body' => [
"query" => [
"prefix" => [
"title" => [
"value" => 'c'
]
]
]
]
];
$response = $this->client->search($search);
// 获取请求执行时间,单位毫秒
$milliseconds = $response['took'];
// 获取匹配的最大分值
$maxScore = $response['hits']['max_score'];
// 获取匹配的文档结果列表
$list = $response['hits']['hits'];
分页
public function docPage()
{
$doc = [
'index' => 'php_articles',
// 分页参数, 开始偏移配置
'from' => 0,
// 分页参数 - 分页大小,默认 10
'size' => 1,
'body' => [
// 查询条件
'query' => [
'wildcard' => [
'title' => [
'value' => '学习*'
]
]
]
]
];
$response = $this->client->search($doc);
$result = json_decode($response->getBody(), true);
return response()->json($result);
}
关于 PHP 操作 ES 到这里接完结了,后续遇到什么查询以补充的形式学习。
这几篇文章的目的在于快速上手使用 ES,仅此而已。
请登录后再评论