首页 > 解决方案 > 根据匹配的数量应用越来越慢的查询过滤器

问题描述

有没有办法构建一个 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 不会花费更多时间尝试查找更多匹配项。

另一种方法是在我的应用程序中执行多个查询,直到达到所需的结果数量,但感觉不对...

标签: elasticsearchquery-optimization

解决方案


推荐阅读