3

私は、elasticsearch -phpの最新バージョンと、MongoDB および ElasticSearch の最新バージョンを使用しています。

1 つまたは複数の値を含む複数のフィールドを検索する必要があります。例:

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は 1 つの要素しか持てない場合があります。

4

1 に答える 1

5

これは、PHP 配列の仕組みが原因で、terms毎回クエリを上書きしているため、代わりに次の行に沿って何かを試してください。

array(
    'body' => array('query' => 
    'bool' => array(
        'must' => array(
            array('terms' => array('country' => implode(' ', $countries))),
            array('terms' => array('category' => implode(' ', $category))),
        )
    )
))

minimum_should_matchmustクエリのwith 句は役に立ちません。

于 2013-12-28T19:47:42.397 に答える