Есть ли способ построить запрос ES, чтобы он не применял более медленные части, такие как поиск по шаблону или включение большего количества полей ... Если число результатов с предыдущими условиями уже достигает указанного размера запроса?
Я предполагаю, что отложил в сторону значение totalHits.
Я попытался поиграть с настройкой усиления, но ES ожидаемо применил все комбинации.
{
"size" : 5,
"query": {
"bool": {
"should" : [
{ "term" : { "search.autocomplete" : { "value" : "120", "boost" : 20 } }},
{ "term" : { "search.autocomplete_inverse" : { "value" : "120", "boost" : 15 } }},
{ "match" : { "search.keyword" : { "query" : "120", "boost" : 10 } }},
{ "wildcard" : { "brand.search" : { "value" : "*120*", "boost": 5}}},
{ "wildcard" : { "category.search" : { "value" : "*120*", "boost": 0}}}
]
}
}
}
Способ, который, если первое условие соответствуетс 5 и более документами ES не тратит больше времени на поиск новых совпадений.
Другой подход - выполнять несколько запросов в моем приложении, пока я не достигну желаемого количества результатов, но это не так.чувствую себя хорошо ...