说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余。一样的工做,你在hadoop中可能须要写mapreduce或hive,在mongo中你必须得用大段的mapreduce脚本,而在ES中仅仅调用一个API就能实现了。api

开始以前,提醒老司机们注意,ES原有的聚合功能Facets在新版本中将被正式被移除,抓紧时间用Aggregations替换Facets吧。Facets真的很慢!函数

1 关于Aggregations

Aggregations的部分特性相似于SQL语言中的group by,avg,sum等函数。但Aggregations API还提供了更加复杂的统计分析接口。oop

掌握Aggregations须要理解两个概念:post

  • 桶(Buckets):符合条件的文档的集合,至关于SQL中的group by。好比,在users表中,按“地区”聚合,一我的将被分到北京桶或上海桶或其余桶里;按“性别”聚合,一我的将被分到男桶或女桶
  • 指标(Metrics):基于Buckets的基础上进行统计分析,至关于SQL中的count,avg,sum等。好比,按“地区”聚合,计算每一个地区的人数,平均年龄等

对照一条SQL来加深咱们的理解:大数据

1
SELECT COUNT(color) FROM table GROUP BY color

GROUP BY至关于作分桶的工做,COUNT是统计指标。spa

下面介绍一些经常使用的Aggregations API。code

2 Metrics

2.1 AVG

求均值。索引

1
2
3
4
5
6
GET /company/employee/_search
{
     "aggs" : {
         "avg_grade" : { "avg" : { "field" : "grade" } }
     }
}

执行结果接口

1
2
3
4
5
{
     "aggregations": {
         "avg_grade": {"value": 75}
     }
}

其余的简单统计API,如valuecount, max,min,sum做用与SQL中相似,就不一一解释了。hadoop

 

更多的话见原网址!