【发布时间】:2019-02-07 12:32:46
【问题描述】:
在 Udemy 教程中,我在这里遇到了这个查询:
{ "query": { "bool": {
"must": {"match": {"genre": "Sci-Fi"}},
"must_not": {"match": {"title": "trek"}},
"filter:" {"range": {"year": {"gte": 2010, "lt": 2015}}}
}}}
我想知道是否可以优化它?我正在考虑两种可能的方法:
将“流派”置于过滤器上下文中。但是一部电影可能有多种类型,所以我不确定使用 type keyword 和 filter-term 是否可以在那里工作。
将“must_not”直接放在过滤器上下文中(没有布尔值)将不起作用,因为据我所知过滤器不允许“过滤掉”,只能“过滤要保留的内容”。但是,如果我将 must_not 包装在 constant_score 或 filter-bool 中,查询会更高效吗?还是 ES 会自动处理这些优化?我只是不明白为什么 must_not 在查询中而不是首先过滤上下文。是否可以仅部分不匹配,从而仅将分数降低一个程度?
【问题讨论】:
标签: elasticsearch