![](/img/trans.png)
[英]PHP Elasticsearch, bool query with filter not getting any result
[英]Elasticsearch Query's Result (PHP)
给定文档的结构
{
"id":""
"field1":""
"field2":""
"field3":""
"field4":""
}
查询时
require 'composer/vendor/autoload.php';
$client = new Elasticsearch\Client(['hosts' => ['127.0.0.1:9200']]);
$value = $_POST['q'];
$query = $client->search(['body' => ['query' => ['bool' => ['should' => [
['match' => ['title' => $value]],
['match' => ['field1' => $value]],
['match' => ['field2' => $value]],
['match' => ['field3' => $value]],
['match' => ['field4' => $value]]
]]]]]);
if ($query['hits']['total'] >= 1) {
$results = $query['hits']['hits'];
}
$ results返回所有字段。
我如何才能使$ results仅返回id,field1和field 4来搜索文档所有字段中的内容?
您只需要像这样在查询中使用_source
过滤
$query = $client->search(['body' => ['_source' => ['id', 'field1', 'field4'],
'query' => ['bool' => ['should' => [
['match' => ['title' => $value]],
['match' => ['field1' => $value]],
['match' => ['field2' => $value]],
['match' => ['field3' => $value]],
['match' => ['field4' => $value]]
]]]]]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.