【发布时间】:2017-02-19 00:04:25
【问题描述】:
我无法使弹性搜索聚合+过滤器与嵌套字段一起使用。数据架构(相关部分)是这样的:
"mappings": {
"rb": {
"properties": {
"project": {
"type": "nested",
"properties": {
"age": {
"type": "long"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
本质上,“rb”对象包含一个名为“project”的嵌套字段,其中包含另外两个字段——“name”和“age”。我正在运行的查询:
"aggs": {
"root": {
"aggs": {
"group": {
"aggs": {
"filtered": {
"aggs": {
"order": {
"percentiles": {
"field": "project.age",
"percents": ["50"]
}
}
},
"filter": {
"range": {
"last_updated": {
"gte": "2015-01-01",
"lt": "2015-07-01"
}
}
}
}
},
"terms": {
"field": "project.name",
"min_doc_count": 5,
"order": {
"filtered>order.50": "asc"
},
"shard_size": 10,
"size": 10
}
}
},
"nested": {
"path": "project"
}
}
}
该查询应该生成与日期过滤器匹配的前 10 个项目(project.name 字段),按其年龄中位数排序,忽略数据库中提及次数少于 5 的项目。仅应为匹配过滤器(日期范围)的项目计算中位数。
尽管数据库中有超过十万个对象,但此查询会生成空列表。没有错误,只是空响应。我在 ES 1.6 和 ES 2.0-beta 上都试过了。
【问题讨论】:
标签: elasticsearch