疲劳是最舒适的枕头,努力工作吧。

嵌套文档是否能使用Pipeline Aggregations?

Elasticsearch | 作者 nainc | 发布于2017年06月21日 | 阅读数:7759

场景是这样:
目前结构是 A has_many B,然后使用了嵌套文档刷进了es。
正在实现这样一个查询:查询出包含某几种类型B,且这几种B的总金额大于x的所有A
参考了这个讨论,https://elasticsearch.cn/question/1512  
查询代码如下:
{
"query": {
"filtered": {
"query": [],
"filter": {
"bool": {
"must": [
{
"geo_distance_range": {
"from": "0km",
"to": "10km",
"geo_location": {
"lon": 123.5601119995,
"lat": 9.1031961441
}
}
},
{
"term": {
"state": "opened"
}
},
{
"nested": {
"path": "clues",
"filter": {
"bool": {
"must": [
{
"terms": {
"clues.state": [
"pending",
"processing"
]
}
},
{
"terms": {
"clues.clue_type": [
"AAAA",
"BBBB",
"CCCC"
]
}
}
]
}
}
}
}
]
}
}
}
},
"aggs": {
"clue_agg": {
"nested": {
"path": "clues"
},
"aggs": {
"poi_id": {
"terms": {
"field": "clues.poi_id"
},
"aggs": {
"sum_bounty": {
"sum": {
"field": "clues.bounty"
}
}
}
},
"bounty_min_range": {
"bucket_selector": {
"buckets_path": {
"total_bounty": "poi_id>sum_bounty"
},
"script": "total_bounty > 100"
}
}
}
}
},
"size": 2000
}



然后发现报错:org.elasticsearch.search.aggregations.bucket.nested.InternalNested cannot be cast to org.elasticsearch.search.aggregations.InternalMultiBucketAggregation
这个是因为在嵌套文档里不能使用bucket_selector查询吗?
然后尝试了一下不在nested里面写这个查询,是可以的。
不知道社区的同学们有没有了解这个事情的,如果嵌套文档里不能用bucket_selector?这个查询需求还有什么方式可以实现?
 
已邀请:

medcl - 今晚打老虎。

赞同来自:

可以给一个mapping和样例数据么,方便快速调试

要回复问题请先登录注册