使用 bool 而不是 not 的弹性搜索查询
Elastic search query using bool instead of not
我正在尝试使用 bool
为 not
构造一个 elasticsearch 查询,因为 not
已被弃用。例如。匹配所有不属于 foo@bar.com
.
的文档
我使用 elasticsearch-dsl 尝试了这些(在这个 post 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'
以外的文档存在,但此 returns 没有结果。
我也试过了
{'query': {
'bool': {
'must_not': [{
'term': {
'author': 'foo@bar.com'
}
}]
}
}}
这 returns 混合文档,其中一些有 'author': 'foo@bar.com'
一些没有。
这原来是 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'
}
}]
}
}}
我正在尝试使用 bool
为 not
构造一个 elasticsearch 查询,因为 not
已被弃用。例如。匹配所有不属于 foo@bar.com
.
我使用 elasticsearch-dsl 尝试了这些(在这个 post 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'
以外的文档存在,但此 returns 没有结果。
我也试过了
{'query': {
'bool': {
'must_not': [{
'term': {
'author': 'foo@bar.com'
}
}]
}
}}
这 returns 混合文档,其中一些有 'author': 'foo@bar.com'
一些没有。
这原来是 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'
}
}]
}
}}