有一个索引:人
"_source" : {
"id" : 304028598,
"name" : "aaa"
},
想要获得这些信息: 1.每个名字的平均数 2.一个名字最多可以拥有
对于sql,我可以通过sql以下获取这些信息
select max(count), avg(count), min(count) from (
select name, count(*) count from t group by name
);
但是如何通过elasticsearch实现它?
答案 0 :(得分:0)
此问题的答案取决于Pipeline aggregations -这些聚合对另一个聚合的输出起作用。
例如,我们有许多文档,每个文档具有不同的hostVersion
,并使用以下内容查找每个主机版本的最大,最小和平均文档数:
"aggs": {
"per_hostver": {
"terms": {
"field": "hostVersion"
}
},
"avg_docs_per_version": {
"avg_bucket": {
"buckets_path": "per_hostver>_count"
}
},
"max_docs_per_version": {
"max_bucket": {
"buckets_path": "per_hostver>_count"
}
},
"min_docs_per_version": {
"min_bucket": {
"buckets_path": "per_hostver>_count"
}
}
}
语法per_hostver>_count
指的是聚合_count
的每个存储桶生成的per_hostver
字段。 _count
是指所有ES聚合生成的特殊文档计数字段的方式。