Elasticsearch PHP 客户端没有返回结果

问题描述 投票:0回答:1

我正在尝试使用 PHP Elasticsearch 客户端,但我无法找出为什么我的代码没有显示任何结果

例如,我想搜索此产品(按其品牌)。它存在于索引 shop-7

现在我用这段代码用 ES PHP 搜索品牌

use Elastic\Elasticsearch\ClientBuilder;    
$shop = Shop::find(7);
$query = [];
$query['bool']['must'] = ['match' => ['brand' => 'TRIUSO']];
 
$params = [
        'index' => 'shop-' . $shop->id,
        'size' => 20,
        "track_total_hits" => true,
        'body' => [
            'query' => $query
        ]
    ];

print_r($params);

$client = ClientBuilder::create()->build();
$results = $client->search($params);
print_r($results['hits']['hits']);

我得到一个空的结果(为了完整性我添加了完整的参数)

Array
(
    [index] => shop-7
    [size] => 20
    [track_total_hits] => 1
    [body] => Array
        (
            [query] => Array
                (
                    [bool] => Array
                        (
                            [must] => Array
                                (
                                    [match] => Array
                                        (
                                            [brand] => TRIUSO
                                        )

                                )

                        )

                )

        )

)
Array
(
)

也许你们中的一个人看到我在这里做错了什么。可悲的是,ES 只返回一个空数组 :)

干杯 阿德里安

php elasticsearch search
1个回答
0
投票

尝试使用 bool 过滤器子句,因为您需要完全匹配。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

这个字段的映射数据类型是什么? https://www.elastic.co/guide/en/elasticsearch/reference/8.6/mapping-types.html

$body =[
            'query' =>
                ['bool' =>
                    ['filter' =>
                        ['term' =>
                            [
                                'brand' =>'TRIUSO'
                            ]
                        ]
                    ]
                ]
            ];
© www.soinside.com 2019 - 2024. All rights reserved.