根据匹配数应用越来越慢的查询过滤器

时间:2019-05-16 10:49:34

标签: elasticsearch query-optimization

是否有一种构建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无需花费更多时间尝试查找更多匹配项。

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

0 个答案:

没有答案