elasticsearch - 使用bool而不是不使用 Elasticsearch 查询

标签 elasticsearch elasticsearch-dsl elasticsearch-py

我正在尝试使用not构建对bool的elasticsearch查询,因为不建议使用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',而有些则没有。

最佳答案

原来这是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'
            }
        }]
    }
}}

关于elasticsearch - 使用bool而不是不使用 Elasticsearch 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45517315/

相关文章:

elasticsearch - 您需要删除Elasticsearch别名吗?

Java : search for multiple fields in an index in elasticsearch

php - 将 bool 搜索查询转换为ElasticSearch格式

elasticsearch watcher 无法解析搜索输入

python - 使用elasticsearch-py关闭与Elasticsearch集群的连接

python - 在python中从ElasticSearch索引中删除文档

elasticsearch - Elasticsearch到通配符搜索电子邮件地址

elasticsearch - Elasticsearch-什么更快?为相同的文档编制索引或使用detect_noop更新:是吗?

elasticsearch - 提供空字符串时,Elasticsearch多重匹配不会返回所有结果

elasticsearch - elasticsearch dsl python:如何在数组中按值搜索