我试图减去聚合
{
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"total_query_id": {
"sum": {
"field": "query_id"
}
},
"total_num_results": {
"sum": {
"field": "num_results"
}
},
"minus_value": {
"bucket_script": {
"buckets_path": {
"qid": "total_query_id",
"nrs": "total_num_results"
},
"script": "qid - nrs"
}
}
}
}
它抛出以下错误
" reason":"无效的管道聚合名为[bucket_script]类型的[minus_value]。只允许兄弟管道聚合在顶层"
我已经来回移动 minus_value 节点到aggs节点,但它无法解决我的问题。
任何人都可以帮我吗?
答案 0 :(得分:1)
这个想法是管道聚合必须在父桶聚合上工作。
在您的示例中并非如此,因此您必须拥有一个父聚合。由于您有match_all
个查询,因此您可以尝试使用global
桶聚合,然后将3个聚合嵌入其中,如下所示:
{
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"all": {
"global": {},
"aggs": {
"total_query_id": {
"sum": {
"field": "query_id"
}
},
"total_num_results": {
"sum": {
"field": "num_results"
}
},
"minus_value": {
"bucket_script": {
"buckets_path": {
"qid": "total_query_id",
"nrs": "total_num_results"
},
"script": "qid - nrs"
}
}
}
}
}
}