elasticsearch 麋鹿。找不到嵌套的值
我有如下索引映射:elasticsearch 麋鹿。找不到嵌套的值,elasticsearch,logging,kibana,elastic-stack,elk,elasticsearch,Logging,Kibana,Elastic Stack,Elk,我有如下索引映射: { "mapping": { "properties": { "MyMapProperty": { "type": "nested", "properties": { "first": { "type": "text", "fields": { "keyword": { "type": "ke
{
"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"
]
}
}
添加新文档后,其来源如下所示:
{
"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 | SecondProperty | ThirdProperty
问题是,当我试图搜索MyMapProperty.fist:value时,它什么也找不到。。。但是,如果我搜索SecondProperty:value3,它将返回结果
我试图理解我做错了什么,是kibana问题还是弹性搜索,或者我正在执行一些奇怪的操作。请您告知……在ES 7.6之前,无法搜索Kibana中的嵌套字段。从ES 7.6开始,它现在使用特定的搜索语法,如下所示:
MyMapProperty:{ first:value }
你可以试试看
注意:这只适用于KQL,而不适用于Lucene,因为Lucene表达式语言解决方案是从MyMapProperty的索引定义中删除类型
"type": "nested"
在嵌套属性变得可搜索之后…我正在使用ES 7.3.2。看看你的链接,我在截图上看到了一个例子,不过有点不同,我看到了括号[]。所以我没有办法像这样搜索?这是你应该检查的。不,不幸的是,如果您希望能够查询Kibana搜索栏中的嵌套字段,那么首先需要升级到7.6。我可以在没有Kibana的情况下查询它吗?使用curl?是的,即使在Kibana开发工具中,您也可以像往常一样通过查询来查询它,只是搜索栏(即)不支持在ES 7.6之前的嵌套字段上搜索。这个答案显示了KQL语法,而且确实有效。对于Lucene查询,这是行不通的。不过,请注意,如果您需要在MyMapProperty中存储多个值,即数组,则需要添加嵌套回。如果删除“嵌套”类型,则它不再是嵌套字段/对象,这是问题的关键所在。这非常有帮助: