赞
踩
聚合(aggregations)可以实现对文档数据的统计、分析、运算。聚合常见的有三类:
其中,我们以学习桶(Bucket)聚合和度量(Metric)聚合为主。需要注意的是:参与聚合的字段类型必须是:keyword、数值、日期、布尔
示例一(桶Bucket聚合功能):统计所有数据中的酒店品牌有几种,此时可以根据酒店品牌的名称做聚合,并且要限定聚会范围(注意aggs与query同级),价格小于200的酒店,自定义排序,按照每组查询到的总数进行升序排序。(聚合可配置的有:size:指定聚合结果的数量,order:指定聚合结果的排序方式,field:指定聚合字段)
- GET /hotel/_search
- {
- "query": {
- "range": {
- "price": {
- "lte": 200
- }
- }
- },
- "size": 0,
- "aggs": {
- "brandAgg": {
- "terms": {
- "field": "brand",
- "size": 20,
- "order": {
- "_count": "asc"
- }
- }
- }
- }
- }
示例二(度量metric嵌套聚合功能):统计所有数据的酒店品牌有多少种,并且算出每种酒店评分的最小值、最大值、平均值、总值,最后以每个酒店的平均评分作降序排序(里面的aggs就是嵌套了一个聚合,stats就是求上面聚合得到的结果进行求最小值、最大值、平均值、总值,order里的scoreAgg.avg就是设置酒店平均分的排序方式)
- GET /hotel/_search
- {
- "size": 0,
- "aggs": {
- "brandAgg": {
- "terms": {
- "field": "brand",
- "size": 20,
- "order": {
- "scoreAgg.avg": "desc"
- }
- },
- "aggs": {
- "scoreAgg": {
- "stats": {
- "field": "score"
- }
- }
- }
- }
- }
- }
至此,ElasticSearch的聚合介绍和实例展示就到此结束啦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。