利用kibana可视化DevTools界面实现ElasticSearch文档数据的聚合查询

 聚合(aggregations)可以实现对文档数据的统计、分析、运算。聚合常见的有三类:

1、 桶(Bucket)聚合 :用来对文档做分组
TermAggregation :按照文档字段值分组
Date Histogram :按照日期阶梯分组,例如一周为一组,或者一月为一组
2、 度量(Metric)聚合 :用以计算一些值,比如:最大值、最小值、平均值等
Avg:求平均值
Max:求最大值
Min:求最小值
Stats :同时求 max min avg sum
3、管道( pipeline )聚合:其它聚合的结果为基础做聚合

其中,我们以学习桶(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的聚合介绍和实例展示就到此结束啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值