Я прямо скажу: в этом сценарии я хочу запрос, который будет соответствовать либо одиночным токенам 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 запроса, если у кого-то нет идей о том, как объединить оба этих запроса в одном теле, действуя как логика ИЛИ (т. Е. «Один или другой»)?
Заранее спасибо!