弹性搜索查询嵌套对象

时间:2019-02-01 20:58:33

标签: elasticsearch

使用Elastic 6.5.4 这是文件

    [{
    "owner": "corp",
    "tags": [{
            "name": "group",
            "value": "cloud"
        },
        {
            "name": "subnet",
            "value": "24"
        },
        {
            "name": "region",
            "value": "northeast"
        },
        {
            "name": "host",
            "value": "mars.edu."
        }
    ]
  }, {
    "owner": "farm",
    "tags": [{
            "name": "group",
            "value": "azure"
        },
        {
            "name": "subnet",
            "value": "28"
        },
        {
            "name": "region",
            "value": "southeast"
        },
        {
            "name": "host",
            "value": "jupiter.org."
        }
    ]
 }]

我在上面的示例中进行了手工编码。我正在尝试通过匹配嵌套的“标签”属性来获得第一条记录。

我尝试了以下操作:

GET /addresses/address/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {"owner": "corp" }},
        {
          "nested": {
            "path": "tags",
            "query": {
              "bool": {
                "must": [
                  {"match": {"tags.name": "group"}},
                  {"match": {"tags.value": "cloud"}},
                  {"match": {"tags.name": "subnet"}},
                  {"match": {"tags.value": "24"}}
                  ]
              }
            }
          }
        }
      ]
    }
  }
}

我没有得到任何结果。但是如果我只有这个:

 {"match": {"tags.name": "group"}},
 {"match": {"tags.value": "cloud"}},

我得到第一条记录。我需要的是能够匹配一条记录的多个名称和值对。

任何帮助将不胜感激。

0 个答案:

没有答案