弹性搜索查询使用bool而不是

时间:2017-08-05 01:17:37

标签: elasticsearch elasticsearch-dsl elasticsearch-py

我尝试使用notbool构建弹性搜索查询,因为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'而另一些文档没有。

1 个答案:

答案 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'
            }
        }]
    }
}}