json - 如何使用DSL在Elasticsearch中检查JSON对象是否具有 key ?

标签 json elasticsearch dsl

如果我在以下格式的索引中有两个文档,我只想清除那些包含空JSON而不是我期望的键的文档。

一种

{ 
  "search": { 
      "gold": [1,2,3,4]
}


{
  "search":{}
}

我应该只得到A json,而不是B json。

我试过存在查询来搜索“gold”,但它只是检查非null值并返回列表。
注意:以下内容无法满足我的要求。
GET test/_search
{
  "query": {
    "bool": {
    "must": [
        { 
           "exists": { "field": "search.gold" }}
       ]
     }
   }
}

这是一个简单的问题,但是即使在他们的文档中搜索后,我也找不到解决方法。
如果有人可以帮助我做到这一点,那就太好了。

索引的简化映射为:
"test": {
    "mappings": {
    "carts": {
        "dynamic": "true",
        "_all": {
        "enabled": false
        },
        "properties": {
        "line_items": {
            "properties": {
            "line_items_dyn_arr": {
                "type": "nested",
                "properties": {
                "dynamic_key": {
                    "type": "keyword"
                }
                }
            }
            }
        }
        }
    }
    }
}

最佳答案

您是否将完整的json存储在搜索字段中?
如果不是这种情况,请共享索引和样本数据的映射。

更新:查询嵌套字段:

{
  "query": {
    "nested": {
      "path": "search",
      "query": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "search.gold"
              }
            }
          ]
        }
      }
    }
  }
}

对于嵌套类型字段,我们需要指定在嵌套字段上执行的路径查询,因为嵌套字段被索引为子文档。

flex 文档:Nested Query

根据问题中添加的映射进行更新:
{
  "query": {
    "nested": {
      "path": "line_items.line_items_dyn_arr",
      "query": {
        "exists": {
          "field": "line_items.line_items_dyn_arr"
        }
      }
    }
  }
}

注意,我们使用了"path": "line_items.line_items_dyn_arr"。我们需要提供完整路径的原因是因为nested字段line_items_dyn_arr本身在line_items对象下。如果line_items_dyn_arr是mapping的属性,而不是objectnested字段的属性,则上一个查询可以正常工作。

关于json - 如何使用DSL在Elasticsearch中检查JSON对象是否具有 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53447270/

相关文章:

javascript - 无法从键 : value pair using Jquery 调用单个值

python - 在 openshift 上将 json 发布到 Flask 时出现 400 错误请求

haskell - 如何在 Haskell 中将功能性 DSL 转换为 Monad?

elasticsearch - 分析还是不分析,选择什么

elasticsearch - Logstash 和 ElasticSearch 之间丢失的文档

string - Scala 中的条件隐式函数

java - Spring Integration 关于如何组合多个变量的两条路径

json - 使用 jsonpath 查询从 Json 对象/数组中过滤名称

javascript - JQuery:从json读取值

elasticsearch - 如何在Elasticsearch中的多个字段中搜索?