Elasticsearch / ES-PHP: условная логика ИЛИ для разных типов запросов - PullRequest
0 голосов
/ 17 сентября 2018

Я прямо скажу: в этом сценарии я хочу запрос, который будет соответствовать либо одиночным токенам multi_matches, либо фразе. Я хочу оба из них в одном запросе:

multi_match

$query = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'multi_match' => [
                            'query' => 'thailand',
                            'fields' => ['name^2', 'description'],
                        ],
                    ],
                 ],
             ],
         ],
     ],
];

фраза multi_match

$query = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'multi_match' => [
                            'query' => 'chiang mai',
                            'type' => 'phrase',
                            'fields' => ['name^2', 'description'],
                        ],
                    ],
                 ],
             ],
         ],
     ],
];

Проблема здесь в том, что вы не можете (afaik) делать условные совпадения между bool блоками. Учитывая это, самое близкое, что я смог получить, - это поместить соответствия фраз в блок should. Похоже, что на этом этапе мне, возможно, придется сделать 2 запроса, если у кого-то нет идей о том, как объединить оба этих запроса в одном теле, действуя как логика ИЛИ (т. Е. «Один или другой»)?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...