Вместо того, чтобы выполнять какой запрос в зависимости от того, что вводит пользователь для этого сценария, я создал ниже общий запрос, и я полагаю, что этого будет достаточно для ваших требований.
POST testindex/_search
{
"query":{
"bool":{
"should":[
{
"bool":{
"must":{
"multi_match":{
"query":"something",
"fields":[ "field_1", "field_2" ]
}
}
}
},
{
"bool":{
"must":{
"multi_match":{
"query":"something",
"fields":[ "field_1", "field_2" ],
"fuzziness": 5
}
}
}
}
]
}
}
}
Для простоты приведенный выше запрос будет выглядеть примерно так:
bool:
should:
bool:
- must [ exact query ]
bool:
- must [ fuzzy query ]
Оба запроса будут выполнены для всех входных данных, однако, если exact query
не даетвы результаты, fuzzy query
вернет вам результаты.
Теперь, если exact query
действительно возвращает результаты, fuzzy query
также может дать вам результаты, за исключением того, что тогда результаты, пораженные exact query
, в конечном итоге будут иметь более высокие значения relevancy
или _score
и, следовательно,будет отображаться в верхней части результатов поиска.
Дайте мне знать, если это поможет!