麋鹿。找不到嵌套值
ELK. Nested values are not found
我有如下索引映射:
{
"mapping": {
"properties": {
"MyMapProperty": {
"type": "nested",
"properties": {
"first": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"second": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
}
},
"SecondProperty": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ThirdProperty": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"Timestamp": {
"type": "date"
}
}
}
}
添加新文档后,源码如下:
{
"_index": "indexName",
"_type": "_doc",
"_id": "idlklkm43rgre",
"_version": 1,
"_score": 0,
"_source": {
"MyMapProperty": {
"first": "value1",
"second": "value2",
},
"SecondProperty": "value3",
"ThirdProperty": "value4",
},
"fields": {
"Timestamp": [
"2020-05-11T12:54:49.049Z"
]
}
}
所以我实际上在 Kibana 中看到了可用字段:
MyMapProperty.fist | MyMapProperty.second |第二个属性 |第三属性
问题是,当我尝试搜索 MyMapProperty.fist : value - 它什么也没找到...但是,如果我将搜索 SecondProperty : value3 - 它 returns 结果。
我想了解我做错了什么,是 kibana 问题还是 elastic search,或者我执行了一些奇怪的操作。能否请您指教...
在 ES 7.6 之前,无法在 Kibana 中搜索嵌套字段。从 ES 7.6 开始,现在 possible to do so 使用特定的搜索语法,如下所示:
MyMapProperty:{ first:value }
你可以试试看
注意:这仅适用于 KQL 而不适用于 Lucene,因为 Lucene 表达式语言 doesn't support nested fields
解决方案是从 "MyMapProperty" 的索引定义中删除类型。
"type": "nested"
之后嵌套的属性变得可以搜索...
我有如下索引映射:
{
"mapping": {
"properties": {
"MyMapProperty": {
"type": "nested",
"properties": {
"first": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"second": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
}
},
"SecondProperty": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ThirdProperty": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"Timestamp": {
"type": "date"
}
}
}
}
添加新文档后,源码如下:
{
"_index": "indexName",
"_type": "_doc",
"_id": "idlklkm43rgre",
"_version": 1,
"_score": 0,
"_source": {
"MyMapProperty": {
"first": "value1",
"second": "value2",
},
"SecondProperty": "value3",
"ThirdProperty": "value4",
},
"fields": {
"Timestamp": [
"2020-05-11T12:54:49.049Z"
]
}
}
所以我实际上在 Kibana 中看到了可用字段: MyMapProperty.fist | MyMapProperty.second |第二个属性 |第三属性
问题是,当我尝试搜索 MyMapProperty.fist : value - 它什么也没找到...但是,如果我将搜索 SecondProperty : value3 - 它 returns 结果。
我想了解我做错了什么,是 kibana 问题还是 elastic search,或者我执行了一些奇怪的操作。能否请您指教...
在 ES 7.6 之前,无法在 Kibana 中搜索嵌套字段。从 ES 7.6 开始,现在 possible to do so 使用特定的搜索语法,如下所示:
MyMapProperty:{ first:value }
你可以试试看
注意:这仅适用于 KQL 而不适用于 Lucene,因为 Lucene 表达式语言 doesn't support nested fields
解决方案是从 "MyMapProperty" 的索引定义中删除类型。
"type": "nested"
之后嵌套的属性变得可以搜索...