在Udemy教程中,我在这里遇到了这个问题:
{ "query": { "bool": {
"must": {"match": {"genre": "Sci-Fi"}},
"must_not": {"match": {"title": "trek"}},
"filter:" {"range": {"year": {"gte": 2010, "lt": 2015}}}
}}}
我想知道是否可以优化它?我正在考虑两种可能的方法:
-
将“流派”放在过滤器上下文中。但是一部电影可能有多种类型,所以我不确定使用类型关键字和过滤术语是否可以在那里工作。
-
直接将“must_not”放在过滤器上下文中(没有bool)将不起作用,因为据我所知,过滤器不允许“过滤掉”,只允许“过滤要保留的内容”。但是,如果我必须将查询包装在一个常量分数或过滤器bool中,那么查询的性能会更高吗?或者ES会自动处理这些优化吗?我只是不明白为什么必须不在查询中,而不是首先过滤上下文。某些东西只能部分不匹配,从而只能降低一个程度吗?