Elasticsearch 聚合详情

什么是聚合(Aggregation)

  • Elasticsearch 除搜索以外,提供针对ES数据进行统计分析的功能
    • 实时性高
    • Hadoop(T+1)
  • 通过聚合,我们会得到一个数据的概览,是分析和总结全套数据,而不是寻找单个文档
    • 统计到各个国家的航班
    • 根据航班目的地统计机票的最大值,最小值、平均值等。
  • 高性能,只需要一条语句,就可以从Elasticsearch 得到分析结果

Kibana 可视化报表  -- 聚合分析

  • 公司程序员的工作岗位和技能分布
  • 公司采用的编程框架分布
  • 公司员工薪水分布
  • 客户的地理位置分布
  • 订单的增长情况
  • ...

集合的分类

  • Bucket Aggregation      一些列满足特定条件的文档的集合
    • 一组满足条件的文档  类似SQL的GROUP by name
    • 一些例子
      • 杭州属于浙江/ 一个演员属于男或女性
      • 嵌套关系 -- 杭州属于浙江属于中国属于亚洲
    • Elasticsearch 提供了很多类似的Bucket,帮助你用多种方式划分文档
      • Term & Range (时间/年龄区间/地理位置)
  • Metric Aggregation       一些数学运算,可以对文档字段进行统计分析
    • 一系列的统计分发,类似SQL 的count、avg
    • 基于数据统计计算结果,除了支持在字段上进行计算,同样也支持在脚本(painless script)产生的结果之上进行计算
    • 大多数Metric 是数学计算,仅输入一个值
      • min 、max、sum、avg、cardinality
    • 部分metric 支持输出多个数值
      • stats  /  percentiles  /  percentile_ranks
  • Pipeline Aggregation    对其他的聚合结果进行二次聚合
  • Matrix Aggregation       支持对多个字段的操作提供一个结果矩阵

一个Bucket 的例子

// 查看航班目的地的统计信息
GET kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "flight_dest": {
      "terms": {
        "field": "DestCountry"
      }
    }
  }
}

// 按照字段的Terms进行分桶

 一个Metrics例子

// 查看航班目的地的统计信息,增加平均,最高最低价格
GET kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "flight_dest": {
      "terms": {
        "field": "DestCountry"
      },
      "aggs": {   # 关键字--aggs
        "avg_price": {  # 可以自定义名字
          "avg": {
            "field": "AvgTicketPrice"
          }
        },
        "max_price": {
          "max": {  # 不同类型的分析
            "field": "AvgTicketPrice"
          }
        },
        "min_price": {
          "min": {  # 不同类型的分析
            "field": "AvgTicketPrice"
          }
        }
      }
    }
  }
}

嵌套示例

// 价格统计加天气信息
GET kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "flight_dest": {
      "terms": {
        "field": "DestCountry"
      },
      "aggs": {
        "stats_price": {
          "stats": {
            "field": "AvgTicketPrice"
          }
        },
        "wather": {
          "terms": {
            "field": "DestWeather",
            "size": 5
          }
        }
      }
    }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值