我尝试使用not
为bool
构建弹性搜索查询,因为not
已被弃用。例如。匹配所有不属于foo@bar.com
的文档。
我使用elasticsearch-dsl(在此帖https://www.elastic.co/blog/lost-in-translation-boolean-operations-and-filters-in-the-bool-query之后)尝试了这些:
{'query': {
'bool': {
'must_not': [{
'match': {
'author': 'foo@bar.com'
}
}]
}
}}
虽然存在'author': 'foo@bar.com'
以外的文档,但不会返回任何结果。
我也试过
{'query': {
'bool': {
'must_not': [{
'term': {
'author': 'foo@bar.com'
}
}]
}
}}
这会返回一些文档,其中一些文档有'author': 'foo@bar.com'
而另一些文档没有。
答案 0 :(得分:1)
这是5.0中的映射更改(https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_50_mapping_changes.html)
的问题以下查询按预期工作:
{'query': {
'bool': {
'must_not': [{
'term': {
'author.keyword': 'foo@bar.com'
}
}]
}
}}