什么是聚合(Aggregation)
1.elasticsearch 除了搜索以外,提供的针对ES数据进行统计分析的功能实时性高、Hadoop(T+1)
2.通过聚合,我们会得到一个数据的概览,是分析和总结全套的数据,而不是寻找单个文档。
3.高性能,只需要一套语句,就可以从Elasticsearch得到分析结果
聚合的分类
Aggregation共分为三种:Metric Aggregations、Bucket Aggregations、 Pipeline Aggregations。下面将分别进行总结。
![0530ffbadf125d9193bef9810b2e08d7.png](https://i-blog.csdnimg.cn/blog_migrate/304a0a9c7138e6d3e30c4add5209061a.jpeg)
Aggregation的语法
size 可以指定返回条数,默认是10 条,但是没说明,我要全部的数据指定size=0,指定0后只返回聚合值。
![32dfcd272e6e8631b64f7d33afc7181d.png](https://i-blog.csdnimg.cn/blog_migrate/1a5e061ed325b0e423c048e1a594fda3.jpeg)
关键词aggs其中max_salary、min_salary、avg_salary 是aggs的名字,可以自定义。
max、min、avg不同类型的分析。
field指定聚合字段。
![88f03abb232fb097f4ce3d3568e6e380.png](https://i-blog.csdnimg.cn/blog_migrate/60d4225e658134caf684e5d874ed5fcf.jpeg)
Metric aggs
单值分析,只输出一个分析结果
1.min、max、avg、sum
2.Cardinality (类似 distinct count)
多值分析,输出多个分析结果
1.stats、extended stats (统计)
2.percentile、percentile rank (百分位)
3.top hits (排在前面的示例)
![d2e44961910a2176778c3f994e58d869.png](https://i-blog.csdnimg.cn/blog_migrate/162dc0b0c7434686127be54826c1877a.jpeg)
统计stats
![c5460b0e5ab2bf0f844f9da830e81439.png](https://i-blog.csdnimg.cn/blog_migrate/be4574ff390d9404e6efd84f51865c38.jpeg)
Bucket aggs
![d008ad0916c12d4c78afd2270f99f732.png](https://i-blog.csdnimg.cn/blog_migrate/1706c531c495354e06d3ab0e3da010e4.jpeg)
按照一定的规则将文档分配到不同的桶中,从而达到分类的目的。ES提供了一些常用的Bucket aggs
1.terms 聚合
它是按照某个字段中的值来分类,比如性别有男、女,就会创建两个桶,分别存放男女的信息。默认会搜集doc_count的信息,即记录有多少男生,有多少女生,然后返回给客户端,这样就完成了一个terms得统计。
字段需要打开fileddata才能进行terms aggs
![116fb5f61a4722c1033c8c95070ff2e5.png](https://i-blog.csdnimg.cn/blog_migrate/55c66b6329907580e2df75e0791c4882.jpeg)
对job子字段keyword做聚合分类,输出了QA有3个文档,DBA有2个文档
![b51fc6cd418b96e159103f3d38fc7214.png](https://i-blog.csdnimg.cn/blog_migrate/1d8655ab1643c67cd0daeab901b821b6.jpeg)
对text字段进行terms,会分词
![4bc3ee9d05f601fecae757684b911a39.png](https://i-blog.csdnimg.cn/blog_migrate/c8b6821fc4fd98555ab6151b143e8088.jpeg)
![0ed478830261adbe909c733de13e2580.png](https://i-blog.csdnimg.cn/blog_migrate/18400c909623dccc9416bf4515eaad62.jpeg)
![bf22e0f82ccf2de4f425d127e78fb7f5.png](https://i-blog.csdnimg.cn/blog_migrate/47ceaa55335f654ae3f214dd07c3a7c9.jpeg)
![be3613506852cab4c0f8df48c9c79993.png](https://i-blog.csdnimg.cn/blog_migrate/1fb96a40ba5663f2c62376eabc71c571.jpeg)
![c9c75e7c2c22cbf8f9c872f37bc4e283.png](https://i-blog.csdnimg.cn/blog_migrate/2c9a687e400e6f1e0700f64793474d1c.jpeg)
![3ed84d889e4c3051d9b208fb4b4dc765.png](https://i-blog.csdnimg.cn/blog_migrate/7e3a6bb00a3468a561154e1276f22f25.jpeg)
![0d8faf68ced636bf4cd6c447564648a9.png](https://i-blog.csdnimg.cn/blog_migrate/9ee3538e29c238a82546a5c274d69ec2.jpeg)
![5146a58dde3187b447bcedb061dc66cf.png](https://i-blog.csdnimg.cn/blog_migrate/7a0fab2bde60fd54df0c9b4ff8a5d4d2.jpeg)
在聚合查询非常频繁,索引不断有新的文档写入,把这个预加载cache打开,terms aggs会提前计算好,提示性能。
2.数字类型 range/data range 、histogram/date histogram
![ed884e484a3fd2a6daf4f909d6ec9682.png](https://i-blog.csdnimg.cn/blog_migrate/db9022bd61b17ce6ff569f1828701599.jpeg)
![e39010b14aab702c23615047dfe42320.png](https://i-blog.csdnimg.cn/blog_migrate/5eabae444145730f552df55a514885a2.jpeg)
可以指定key 大于20000
![92131c9e49e2f68374a0d155cbecb7d8.png](https://i-blog.csdnimg.cn/blog_migrate/2c2a7de6116ccc114045516880f96419.jpeg)
![9fb468d960e484030e3240e12ade7a84.png](https://i-blog.csdnimg.cn/blog_migrate/160f8199394021d6ecf460918dd2625f.jpeg)
![55ebd3c6f17ef5d2471096ef52428397.png](https://i-blog.csdnimg.cn/blog_migrate/74f7d82809e0ff05069016c329d4bfed.jpeg)
3.支持嵌套,可以在桶里再做分桶
![43103ded98179e17c7c54af3e5b923a2.png](https://i-blog.csdnimg.cn/blog_migrate/f64d5ea7f47702571d715899973416af.jpeg)
![708f84ece5fbdb1122ff28548b80dc1d.png](https://i-blog.csdnimg.cn/blog_migrate/1b99327eb043060c4ca36a6c772b5ca9.jpeg)
![354b24f746f5872cc8b658b03ba2dc62.png](https://i-blog.csdnimg.cn/blog_migrate/c981936c946bae359601c462407f1504.jpeg)
![c33600458f20c5112bd0b2bf926e3224.png](https://i-blog.csdnimg.cn/blog_migrate/82f7870be21545b16bfd99d2c0c359ae.jpeg)