是否有一种构建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无需花费更多时间尝试查找更多匹配项。
一种不同的方法是在我的应用程序中执行多个查询,直到达到所需的结果数量,但感觉不正确...