繁体   English   中英

Elasticsearch查询的结果(PHP)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM