elasticsearch - 根据匹配的数量应用越来越慢的查询过滤器
问题描述
有没有办法构建一个 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 不会花费更多时间尝试查找更多匹配项。
另一种方法是在我的应用程序中执行多个查询,直到达到所需的结果数量,但感觉不对...
解决方案
推荐阅读
- r - 某些事件按 ID 和日期发生
- python - 使用 IMAPClient 搜索主题中的关键字?
- c# - 如何在 mathdotnet 中使用 Nelder Meade Simplex 算法进行函数最大化
- angular - 如何使用 ion-reorder 重新排序分组项目
- .net - IIS 工作进程 RAM 使用率高,进程转储显示大多数是 TdsParserStateObjectNative 类
- javascript - 比较两个相似的对象(持有相同的键)并返回不同的键值对
- java - 在 Spring 库中模拟 OpenFeign 客户端以进行单元测试,而不是用于 Spring Boot 应用程序
- python - 是否可以断言使用另一个模拟的返回值调用了模拟方法?
- java - Java中删除单链表的节点
- javascript - Angular 指令中的 this 关键字副作用