2017-06-08 71 views
1

我有一個參數是數組的數據。我知道在Kibana中數組中的對象並不是很好的支持,但是我想知道是否有一種方法只用一個值來過濾該數組。我的意思是:ElasticSearch-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" 
      } 
     ] 
     } 
    } 
    } 
} 

而且我想只有它包含key1的在我的SpecificMetaData陣列,以繪製它們的數據。現在,當我繪製SpecificMetaData.value時,它將獲取數組的所有值(key1和key2的值),並且不會建議SpecificMetaData.value1和SpecificMetaData.value2。

如果您需要更多信息,請告訴我。謝謝。

回答

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" 
         } 
        } 
        } 
       ] 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
}