【发布时间】:2018-11-28 22:52:36
【问题描述】:
我需要在 ElasticSearch 中计算一个管道聚合,但我不知道如何表达它。
每个文档都有一个电子邮件地址和一个金额。我需要输出按唯一电子邮件分组的数量范围桶。
{ "0 - 99": 300, "100 - 400": 100 ...}
基本上是预期的输出(密钥将在我的应用程序代码中转换),表明 300 封唯一电子邮件已累计收到所有文档中至少 99 封(数量)。
直观地说,我希望得到如下查询。但是,范围似乎不是存储桶聚合(或允许存储桶路径)。
这里的正确方法是什么?
{
aggs: {
users: {
terms: {
field: "email"
},
aggs: {
amount_received: {
sum: {
field: "amount"
}
}
}
},
amount_ranges: {
range: {
buckets_path: "users>amount_received",
ranges: [
{ to: 99.0 },
{ from: 100.0, to: 299.0 },
{ from: 300.0, to: 599.0 },
{ from: 600.0 }
]
}
}
}
}
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation