簡體   English   中英

ElasticSearch並在PHP中搜索多個字段

[英]ElasticSearch and searching on multiple fields in 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;

但結果甚至沒有接近我希望得到的數據。

有時$ States和/或$ 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子句沒用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM