Arrays 对象数组上的过滤器
在elasticsearch中,我们有一个具有对象数组的类型。当尝试从Kibana访问时,我在访问时遇到一些不一致的情况 这是我的地图摘录Arrays 对象数组上的过滤器,arrays,elasticsearch,Arrays,elasticsearch,在elasticsearch中,我们有一个具有对象数组的类型。当尝试从Kibana访问时,我在访问时遇到一些不一致的情况 这是我的地图摘录 { "myIndex-2017.08.22": { "mappings": { "typeA": { "properties": { . . .
{
"myIndex-2017.08.22": {
"mappings": {
"typeA": {
"properties": {
.
.
.
"Collection": {
"properties": {
.
.
.
"FileType": {
"type": "text"
}
}
}
}
}
}
}
}
在这里,我可以在集合中有多个对象,即,将其作为数组进行索引。当我尝试使用一种文件类型(例如FileType:DOCX)进行查询时,我也会得到一些文件类型为HTML的记录
当深入研究时,我发现这是因为有些记录有两个集合元素,一个是FileType:DOCX,另一个是FileType:HTML
为什么过滤是这样工作的?是否有其他方法可以过滤并仅获取FileType:DOCX而不显示FileType:HTML
我正在运行ES 5.3。Elasticsearch将数组字段从盒子中展平,因此
{
"files" : [
{
"name" : "name1",
"fileType" : "doc"
},
{
"name" : "name2",
"fileType" : "html"
}
]}
变成:
{
"files.name" : [ "name1", "name2" ],
"files.fileType" : [ "doc", "html" ]
}
如果要在此数组中搜索对象本身,则必须在集合的映射中使用:
{
"myIndex-2017.08.22": {
"mappings": {
"typeA": {
"properties": {
.
.
.
"Collection": {
"type": "nested",
"properties": {
.
.
.
"FileType": {
"type": "text"
}
}
}
}
}
}
}
}
这似乎在elasticsearch中起作用,但我无法在Kibana中查询这些字段。快速谷歌搜索表明Kibana根本不支持这一点:(()。有没有办法让Kibana也能起作用。我不这么认为,当我阅读评论时,Kibana有一个简单的解决方案。