我正在使用ElasticSearch v5。我正在尝试执行类似于Elasticsearch analytics percent中描述的类似操作,其中我有一个术语聚合,我想计算一个百分比,这个百分比是每个存储桶中所有存储桶总数的一个值。这是我的要求:ElasticSearch从总数中计算每个存储桶的百分比
{
"query": {
"match_all": {}
},
"aggs": {
"periods": {
"terms": {
"field": "periods",
"size": 3
},
"aggs": {
"balance": {
"sum": {
"field": "balance"
}
}
}
},
"total_balance": {
"sum_bucket": {
"buckets_path": "periods>balance"
}
}
}
}
结果我得到的回报,这是这样的:
{
"aggregations": {
"periods": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 1018940846,
"buckets": [
{
"key": 1177977600000,
"doc_count": 11615418,
"balance": {
"value": 2492032741768.1616
}
},
{
"key": 1185926400000,
"doc_count": 11592425,
"balance": {
"value": 2575365325406.6533
}
},
{
"key": 1175385600000,
"doc_count": 11477402,
"balance": {
"value": 2456256695380.8306
}
}
]
},
"total_balance": {
"value": 7523654762555.645
}
}
}
如何计算“平衡” /“total_balance”在桶中的每个项目来自ElasticSearch?我在桶(句号)级尝试了桶脚本聚合,但我无法将我的buckets_path设置为total_balance。这篇文章https://discuss.elastic.co/t/combining-two-aggregations-to-get-term-percentage/22201谈到了使用重要术语聚合,但我需要计算使用特定的字段,而不是doc_count。我知道我可以在客户端做一个简单的计算,但如果可能的话,我想在ElasticSearch中完成这一切。
您可以添加到您的问题:您在elasticsearch中编制索引的源数据,并手动计算想要实现的结果? – paweloque