Elasticsearch-聚合(Aggregations)

Elasticsearch聚合速查表,介绍指标聚合、桶分聚合、管道聚合的分类和聚合示例。
基于7.11版本。

聚合将数据汇总为指标, 统计, 或其他分析。

聚合分类

  • Metric:指标聚合,从文档字段值中计算指标,如总和、平均值等
  • Bucket:桶分聚合,根据字段值、范围或其他条件将文档分组为桶
  • Pipeline:管道聚合,从其他的聚合结果作为输入

Bucket

  • Adjacency matrix:邻接矩阵,获取矩阵每个组的计数
  • Auto-interval date histogram:时间柱状图,根据桶的数量自动的选择桶的间隔
  • Children:子聚合,如:join field
  • Composite:多存储桶聚合,类似于多字段分组
  • Date histogram:日期柱状图,可以按日历感知时间间隔(如:day,week,houth)和固定时间间隔。
  • Date range:时间范围聚合,from:从大于等于某个时间,to:到小于某个时间
  • Filter:过滤器聚合,将当前的聚合的上下文缩小到一组特定文档。在当前聚合上应用过滤,不影响其他聚合器。
  • Filters:多桶过滤器聚合,每个桶都与一个过滤器相关联
  • Geo-distance:地理距离聚合,工作在geo_point字段上,定义一个原点或一组距离范围的桶,评估落在每个桶的文档。
  • Geo hash grid:网格聚合,每个单元格使用自定义精度的geohash进行标记,geohash可以在1~12之间选择精度
  • Geotile grid:网格聚合,每个单元格对应许多在线地图的图块,使用{zoom}/{x}/{y}标记
  • Global:在搜索的上下文中定义一个,不受搜索影响的上下文进行聚合。与Filter对应
  • Histogram:柱状图聚合,指定间隔,返回落在间隔内的文档数
  • IP range:IP类型字段的范围聚合
  • Missing:NULL字段聚合
  • Nested:嵌套文档聚合
  • Parent:父文档聚合
  • Range:范围聚合,定义一组范围,每组范围代表一个桶
  • Rare terms:稀少(长期分布但不频繁的项)的术语聚合
  • Reverse nested:在嵌套聚合内定义聚合父文档
  • Sampler:采样器聚合,将聚合的文档限制在得分最高的文档上,降低繁重缓慢的聚合成本。shard_size:限制在每个分片上使用得分最高的文档数
  • Diversified sampler:多样化采集聚合,采用多样化的设置进行抽样可以提供一种方法来消除内容偏差
  • Terms:动态桶聚合。结果是近似值,可以通过size、shard_size来控制其精度。对标关系数据库中的group by。size:定义返回桶的数;shard_size:每个分片使用文档样本数
  • Significant terms:显著的关键词聚合,通过background sets(背景集合)对比聚合数据。通常使用整个索引库内容当做背景集合,可以通过background_filter设置。
  • Significant text:显著的文本聚合,像Significant terms一样,区别是作用在text字段
  • Variable width histogram:动态的宽度柱状图聚合,定义桶数,动态确定桶间隔。
  • Subtleties of bucketing range fields:范围字段导致桶数大于文档数

Metric

  • Avg:计算平均值,单值的指标聚合,提取文档的数值型字段或提供的脚本。
  • Min:计算最小值,histogram fields时,返回values中的最小值
  • Max:计算最大值
  • Sum:计算总和
  • Boxplot:盒型图,返回最大值、最小值、25%、50%和75%的值。常用语响应时间的分析
  • Cardinality:去重求和,计算不同值的近似计数,可以从文档中的特定字段提取值,也可以通过脚本
  • stats:统计信息,多值的指标聚合,可以从文档中的特定字段提取值,也可以通过脚本
    • status: min, max, sum, count and avg
    • string stats: count, min_length, max_length, avg_length, entropy
    • extended stats: sum_of_squares, variance, std_deviation
  • geo:地图
    • geo bounds: 地理边界聚合
    • geo centroid: 地理重心聚合
  • Median absolute deviation:中位数绝对偏差,更可靠的统计信息,可以减少异常值对于数据集的影响。
  • Percentile rank:百分比等级,显示低于特定值的百分比。如:显示web服务加载时间的占比
  • Percentiles:百分位的值,显示出现百分位观察值的点,percents指定返回的百分位。如:显示大于观察值95%的值
  • Scripted metric:使用脚本执行获取指标
  • Value count:去重计数
  • Weighted avg:带权重的平均值

Pipeline

  • Avg bucket:【sibling pipeline aggs】,计算平均值
  • max bucket:【sibling pipeline aggs】,计算最大值
  • min bucket:【sibling pipeline aggs】,计算最小值
  • sum bucket:【sibling pipeline aggs】,计算总和
  • bucket script:【parent pipeline aggs】,脚本计算
  • bucket selector:【parent pipeline aggs】,桶过滤
  • bucket sort:【parent pipeline aggs】,桶排序
  • cumulative cardinality:累积基数,此值显示自查询时间段开始以来总的计数,也可显示增量的计数。如:每天网站的新访问者新增数量。
  • cumulative sum:累积总和,此值显示自查询时间段开始以来累积总和。如:月销售额的累积总和。
  • derivative:柱状图导数计算
  • stats bucket:【sibling pipeline aggs】,统计信息,包括min, max, sum, count and avg
  • extended stats bucket:【sibling pipeline aggs】扩展的统计信息,包括平方和、标准差等
  • inference bucket:【parent pipeline aggs】,训练模型推断
  • moving average:滑动窗口平均值
  • moving function:滑动窗口上自定义函数
  • moving percentiles:基于百分位的滑动窗口
  • normalize:计算标准的数学值
  • percentiles bucket:计算桶的百分位的值
  • serial differencing:时间序列差值

示例

GET /bank/_search
{
  # 仅返回聚合结果,不需要搜索结果的内容
  "size": 0,
  "aggs": {
    # 单列分组统计,sql: select sum(balance) as sum_balance,avg(balance) as avg_balance from bank group by state.keyword limit 10;
    "group_by_state": {
      # 定义桶的类型
      "terms": {
        "field": "state.keyword"
      },
      # 添加自定义Mata信息
      "meta": {
        "my-metadata-field": "foo"
      }
      # 子聚合
      "aggs": {
        "avg_balance": {
          "avg": {
            "field": "balance"
          }
        },
        "sum_balance": {
          "sum": {
            "field": "balance"
          }
        }
      }
    },
    # 多列分组统计 sql: select sum(balance) as sum_balance from bank group by state.keyword, gender.keyword limit 50;
    "group_by_fields": {
      "composite":{
        "sources": [
          {
            "state": {
              "terms": {
                "field": "state.keyword"
              }
            }
          },{
            "gender": {
              "terms": {
                "field": "gender.keyword"
              }
            }
          }
        ],
        # 查询记录数,默认10条
        "size": 50
      },
      # 子聚合
      "aggs": {
        "sum_balance": {
          "sum": {
            "field": "balance"
          }
        }
      }
    }
  }
  # 聚合后置过滤器,对聚合结果无影响
  "post_filter": { 
    "term": { "color": "red" }
  }
}

你可能感兴趣的:(Elasticsearch-聚合(Aggregations))