ElasticSearch并在PHP中搜索多个字段

我正在使用最新版本的elasticsearch-php以及最新版本的MongoDB和ElasticSearch。

我需要对可以包含一个或多个值的多个字段进行搜索。例:

country_code应为NL,BE或DE,并且类别应包含AA01,BB01,CC02或ZZ11

我以为我会按照以下方式解决它(PHP):

$countries = array(“NL”, “BE”, “DE”);

$category = array(“AA01”, “BB01”, “CC02”, “ZZ11”);

$searchParams['body']['query']['bool']['must']['terms']['country'] = $countries;

$searchParams['body']['query']['bool']['must']['terms']['categories'] = $category;

$searchParams['body']['query']['bool']['must']['terms']['minimum_should_match'] = 1;

但是结果甚至还不能接近我期望返回的数据。

有时 $ countries 和/或 $ category 只能有一个元素。

回答:

因为PHP数组是如何工作的,您terms每次都覆盖查询,而是尝试以下方法:

array(

'body' => array('query' =>

'bool' => array(

'must' => array(

array('terms' => array('country' => implode(' ', $countries))),

array('terms' => array('category' => implode(' ', $category))),

)

)

))

minimum_should_match``must查询的with 子句是无用的。

以上是 ElasticSearch并在PHP中搜索多个字段 的全部内容, 来源链接: utcz.com/qa/425931.html

回到顶部