elasticsearch - 在elasticsearch中搜索具有空/空对象字段的文档

标签 elasticsearch

我有一个带有以下映射的elasticsearch索引,一些文档包含状态{id:1,状态:“failed”}}的对象,而某些则为null,似乎找不到我可以搜索具有“status.name”的文档的方式[“failed”,“null”,“passed”](文档状态失败,通过或未设置/为空的文档)。例如,执行如下所示的字词查询会得到空结果集

{
"name":{
"type":"keyword"
}
 "status": {
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "keyword"
                    }
                }
            }
}

查询尝试:
{
"terms": {
  "status.name": [  "failed", "null" ]
   }

还尝试将status.name的映射设置为"null_value": "null"

最佳答案

将 bool(boolean) 查询与仅应子句一起使用,这要求您的至少一个查询必须匹配。您可以通过将exists -query放入must_not -query的bool -clause中来查询没有字段或在该字段中具有空值的文档(请参阅Elasticsearch引用:Exists-query)。

GET myindex/_search
{
  "query": {
    "bool": {
      "should": [
        {"term": {"status.name": {"value": "failed"}}},
        {"term": {"status.name": {"value": "passed"}}},
        {"bool": {"must_not": {"exists": {"field": "status.name"}}}}
      ]
    }
  }
}

关于elasticsearch - 在elasticsearch中搜索具有空/空对象字段的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59989949/

相关文章:

ruby-on-rails - 手动重新安装(没有自制程序)时,RSPEC找不到 Elasticsearch

ruby - elasticsearch-logstash时差计算(ELK 5.3)

elasticsearch - Grafana 对 Elasticsearch 数据源的两个字段总和使用聚合

amazon-web-services - 在 ec2 上从 docker 运行 elasticsearch

datetime - Logstash配置文件中的日期解析错误

elasticsearch - Kibana fatal error : [elasticsearch. url]:缺少此键的定义

elasticsearch - Elasticsearch-如果搜索频率更高,则得分更高

elasticsearch - 具有嵌套字段和映射的 Spring Data Elastic Search

java - OpenShift ElasticSearch

ruby-on-rails - 使用SearchKick进行通配符搜索