我有一个参数是数组的数据。我知道数组中的对象在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。
如果您需要更多信息,请告诉我。谢谢。
答案 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"
}
}
}
]
}
}
}
}
]
}
}
}