Применение все более медленных фильтров запросов в зависимости от количества совпадений - PullRequest
0 голосов
/ 16 мая 2019

Есть ли способ построить запрос 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 не тратит больше времени на поиск новых совпадений.

Другой подход - выполнять несколько запросов в моем приложении, пока я не достигну желаемого количества результатов, но это не так.чувствую себя хорошо ...

...