Ben*_*Ben 2 elasticsearch elasticsearch-aggregation
我需要在 ElasticSearch 中计算管道聚合,但我不知道如何表达它。
每个文档都有一个电子邮件地址和一个金额。我需要输出按唯一电子邮件分组的金额计数范围。
{ "0 - 99": 300, "100 - 400": 100 ...}
Run Code Online (Sandbox Code Playgroud)
基本上是预期的输出(密钥将在我的应用程序代码中转换),表明 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 }
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
没有直接执行此操作的管道聚合。但是,我想我想出了一个适合您需求的解决方案,就像这样。这个想法是重复相同的terms/sum聚合,然后bucket_selector对您感兴趣的每个范围使用管道聚合。
POST index/_search
{
"size": 0,
"aggs": {
"users_99": {
"terms": {
"field": "email",
"size": 1000
},
"aggs": {
"amount_received": {
"sum": {
"field": "amount"
}
},
"-99": {
"bucket_selector": {
"buckets_path": {
"amountReceived": "amount_received"
},
"script": "params.amountReceived < 100"
}
}
}
},
"users_100_299": {
"terms": {
"field": "email",
"size": 1000
},
"aggs": {
"amount_received": {
"sum": {
"field": "amount"
}
},
"100-299": {
"bucket_selector": {
"buckets_path": {
"amountReceived": "amount_received"
},
"script": "params.amountReceived >= 100 && params.amountReceived < 300"
}
}
}
},
"users_300_599": {
"terms": {
"field": "email",
"size": 1000
},
"aggs": {
"amount_received": {
"sum": {
"field": "amount"
}
},
"300-599": {
"bucket_selector": {
"buckets_path": {
"amountReceived": "amount_received"
},
"script": "params.amountReceived >= 300 && params.amountReceived < 600"
}
}
}
},
"users_600": {
"terms": {
"field": "email",
"size": 1000
},
"aggs": {
"amount_received": {
"sum": {
"field": "amount"
}
},
"600": {
"bucket_selector": {
"buckets_path": {
"amountReceived": "amount_received"
},
"script": "params.amountReceived >= 600"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在结果中,存储桶的数量users_99将是数量小于 99 的唯一电子邮件的数量。同样,users_100_299将包含与数量在 100 到 300 之间的唯一电子邮件一样多的存储桶。依此类推...
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |