我有一个假设的场景-一个电子邮件不是唯一的数据库,其中一个用户使用同一封电子邮件注册了两次。我想对唯一结果执行聚合,因此在MySQL中,我将执行以下类似操作:
SELECT count(*) as total_users, avg(age) as average_age
FROM users
GROUP BY email
在Elastic中可以做同样的事情吗?
我知道terms
,但是terms
会将用户归入返回的数据集中,并对每个分组应用汇总,即:
"aggregations" : {
"average_age" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "email@domain.com",
"doc_count" : 2,
"average_age" : {
"value" : 27
}
}
]
}
}
我想要的是分组数据的单个结果,即:
"aggregations" : {
"average_age" : {
"average_age" : {
"value" : 33
}
}
}