我有一个参数是数组的数据。我知道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。
如果您需要更多信息,请告诉我。谢谢。
最佳答案
您可能需要将数据映射到映射,以便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"
}
}
}
]
}
}
}
}
]
}
}
}
关于arrays - ElasticSearch-Kibana:按键过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437940/