ElasticSearch-Kibana:按键过滤数组

时间:2017-06-08 14:04:05

标签: arrays object elasticsearch kibana

我有一个参数是数组的数据。我知道数组中的对象在Kibana中得不到很好的支持,但我想知道是否有一种方法可以只用一个值来过滤该数组。我的意思是:

这是一个例子的json:

{
  "_index": "index",
  "_type": "data",
  "_id": "8",
  "_version": 2,
  "_score": 1,
  "_source": {
    "envelope": {
      "version": "0.0.1",
      "submitter": "VF12RBU1D53087510",
      "MetaData": {
        "SpecificMetaData": [
          {
            "key": "key1",
            "value": "94"
          },
          {
            "key": "key2",
            "value": "0"
          }
        ]
      }
    }
  }
}

我想只在我的SpecificMetaData数组中包含key1的数据才能绘制它们。现在,当我绘制SpecificMetaData.value时,它获取数组的所有值(key1和key2的值),并且不提出SpecificMetaData.value1和SpecificMetaData.value2。

如果您需要更多信息,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:0)

您可能需要将数据映射到映射,以便SpecificMetaData应该充当nested_type并且嵌套过滤器的inner_hits可以为您提供具有key1的对象。

PUT envelope_index
{
    "mappings": {
        "document_type": {
            "properties": {
                "envelope": {
                    "type": "object",
                    "properties": {
                        "version": {
                            "type": "text"
                        },
                        "submitter": {
                            "type": "text"
                        },
                        "MetaData": {
                            "type": "object",
                            "properties": {
                                "SpecificMetaData": {
                                    "type": "nested"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

POST envelope_index/document_type
{
    "envelope": {
        "version": "0.0.1",
        "submitter": "VF12RBU1D53087510",
        "MetaData": {
            "SpecificMetaData": [{
                    "key": "key1",
                    "value": "94"
                },
                {
                    "key": "key2",
                    "value": "0"
                }
            ]
        }
    }
 }

POST envelope_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "inner_hits": {},
            "path": "envelope.MetaData.SpecificMetaData",
            "query": {
              "bool": {
                "must": [
                  {
                    "term": {
                      "envelope.MetaData.SpecificMetaData.key": {
                        "value": "key1"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }  
}
相关问题