首页 > 解决方案 > 使用 elasticsearch 查询完整的 JSON 对象

问题描述

我想查询完整的 Json。

我将 Json 对象保存在不同的文档中。

_id: 1,
my_json: {
              "field1": "1",
              "field2": "2",
              "field3": "3",
              "field4": "4"
          }
_id: 2,
my_json: {
              "field1": "11",
              "field2": "22",
              "field3": "33",
              "field4": "44"
          } 

在我的查询中,我想匹配完整的组合而不是单个字段。所以我尝试了下面的查询,但它返回空响应。

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "my_json": [
              {
                "field1": "11",
                "field2": "22",
                "field3": "33",
                "field4": "44"
              },
              {
                "field1": "1",
                "field2": "2",
                "field3": "3",
                "field4": "4"
              }
            ]
          }
        }
      ]
    }
  }
}

我需要使用越来越多的像上面这样的 Json 对象。所以我不能使用常规查询。因此我试图匹配完整的 JSON 对象。

标签: jsonelasticsearch

解决方案


如果您想匹配 JSON 对象的所有属性,您可以这样做,但在 JSON 中的每个字段使用一个术语查询,即 JSON 的每个字段必须匹配

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "my_json.field1": "11"
          }
        },
        {
          "term": {
            "my_json.field2": "22"
          }
        },
        {
          "term": {
            "my_json.field3": "33"
          }
        },
        {
          "term": {
            "my_json.field4": "44"
          }
        }
      ]
    }
  }
}

推荐阅读