麋鹿.找不到嵌套值



我有如下索引映射:

{
"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.second |第二物业 |第三属性

问题是,当我尝试搜索MyMapProperty.fist:值时 - 它什么也找不到...但是,如果我搜索第二属性:值3 - 它会返回结果。

我试图了解我做错了什么,是 kibana 问题还是弹性搜索,或者我正在执行一些奇怪的操作。你能指教一下吗?

在 ES 7.6 之前,无法在 Kibana 内部搜索嵌套字段。从 ES 7.6 开始,现在可以使用特定的搜索语法来执行此操作,如下所示:

MyMapProperty:{ first:value }

你可以试试。

注意:这仅适用于 KQL,而不适用于 Lucene,因为 Lucene 表达式语言不支持嵌套字段

解决方案是从"MyMapProperty"的索引定义中删除类型。

"type": "nested"

之后嵌套属性变得可搜索...

最新更新