elasticsearch - 获取所有不包含 key 的文档?

标签 elasticsearch

例如,我有2个类型的文档,例如

{
    "field2":"xx",
    "field1","x"
}
{
    "field1","x"
}

一个具有2个字段(field1field2),另一个仅具有1个字段(field1)。

现在,我想查询所有没有field2字段的文档?

EIDT
dsl:
 {
    "query": {
        "bool": {
            "filter": [
                {
                    "exists": {
                        "field": "LableToMember"
                    }
                }
            ]
        }
    }
}

doc:
{
    "LableToMember": [
        {
            "xxx": "xxx",
            "id": "1"
        }
    ],
    "field2":"xxx"
}  
LableToMember是一个嵌套字段。我发现exists api不能用于嵌套字段?

最佳答案

请注意,在ES 5.x中, missing query has been removed支持exists 1。

因此,如果要向前兼容,则最好使用以下命令:

POST /_search
{
    "query": {
        "bool": {
            "must_not": {
                "exists": {
                    "field": "field2"
                }
            }
        }
    }
}

更新

如果要检索所有没有field2或具有给定值的field2的文档,则可以这样操作:
POST /_search
{
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "field2"
              }
            }
          }
        },
        {
          "term": {
            "field2": "somevalue"
          }
        }
      ]
    }
  }
}

关于elasticsearch - 获取所有不包含 key 的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397530/

相关文章:

elasticsearch - Logstash 5 Alpha4 到 elasticsearch5 Alpha4 通信错误

javascript - 从Elasticsearch下载300,000+行作为.csv文件

elasticsearch - Elasticsearch将两个单词合并为一个

c# - Log4Net和ElasticSearch-多个索引

java - 使用 Java API 在 Elasticsearch 的所有字段中搜索多个字符串

database - Elasticsearch - 多日志设计

日期范围查询中的 Elasticsearch 占位符月份

php - 不区分大小写的搜索不起作用

elasticsearch - 如何在一个仪表板kibana中显示不同的时间段?

elasticsearch - 如何过滤字典中的特定值?