什么是聚合(Aggregation)
1、 elasticsearch 除了搜索以外,提供的针对ES数据进行统计分析的功能
实时性高、Hadoop(T+1)
2、通过聚合,我们会得到一个数据的概览,是分析和总结全套的数据,而不是寻找单个文档
3、高性能,只需要一套语句,就可以从Elasticsearch得到分析结果(无需在客户端自己去实现分析逻辑)
集合的分类
Aggregation共分为三种:Metric Aggregations、Bucket Aggregations、 Pipeline Aggregations、Matrix Aggregations。
Metric Aggregations 主要是做 一系列的统计,Bucket Aggregations相当于分组。
准备测试数据:
PUT zhifou/_doc/1
{
"name":"顾老二",
"age":30,
"from": "gu",
"desc": "皮肤黑、武器长、性格直",
"tags": ["黑", "长", "直"]
}
PUT zhifou/_doc/2
{
"name":"大娘子",
"age":18,
"from":"sheng",
"desc":"肤白貌美,娇憨可爱",
"tags":["白", "富","美"]
}
PUT zhifou/_doc/3
{
"name":"龙套偏房",
"age":22,
"from":"gu",
"desc":"mmp,没怎么看,不知道怎么形容",
"tags":["造数据", "真","难"]
}
PUT zhifou/_doc/4
{
"name":"石头",
"age":29,
"from":"gu",
"desc":"粗中有细,狐假虎威",
"tags":["粗", "大","猛"]
}
PUT zhifou/_doc/5
{
"name":"魏行首",
"age":25,
"from":"广云台",
"desc":"仿佛兮若轻云之蔽月,飘飘兮若流风之回雪,mmp,最后竟然没有嫁给顾老二!",
"tags":["闭月","羞花"]
}
Bucket Aggregations 的api 介绍
下面例子使用 term是 进行分桶
分组查询
现在我想要查询所有人的年龄段,并且按照