飞道的博客

Elasticsearch --- 聚合查询(一)

496人阅读  评论(0)

一、ES聚合

说明该博客对于的Elasticsearch 的版本为6.5.3。

在Mysql中,我们可以获取一组数据的 最大值(Max)最小值(Min)。同样我们能够对这组数据进行 分组(Group)。那么对于Elasticsearch中

我们也可以实现同样的功能,聚合有关资料官方文档内容较多,这里大概分两篇博客写这个有关Elasticsearch聚合。

官方对聚合有四个关键字: Metric(指标)Bucketing(桶)Matrix(矩阵)Pipeline(管道)

 

二、聚合概念

1. ES聚合分析是什么?

概念 Elasticsearch除全文检索功能外提供的针对Elasticsearch数据做统计分析的功能。它的实时性高,所有的计算结果都是即时返回。
Elasticsearch将聚合分析主要分为如下4类:


  
  1. Metric(指标): 指标分析类型,如计算最大值、最小值、平均值等等 (对桶内的文档进行聚合分析的操作)
  2. Bucket(桶): 分桶类型,类似SQL中的GROUP BY语法 (满足特定条件的文档的集合)
  3. Pipeline(管道): 管道分析类型,基于上一级的聚合分析结果进行在分析
  4. Matrix(矩阵): 矩阵分析类型(聚合是一种面向数值型的聚合,用于计算一组文档字段中的统计信息)

2.ES聚合分析查询的写法

在查询请求体中以aggregations节点按如下语法定义聚合分析:


  
  1. "aggregations" : {
  2. " <aggregation_name>" : { <!--聚合的名字 -->
  3. " <aggregation_type>" : { <!--聚合的类型 -->
  4. <aggregation_body> <!--聚合体:对哪些字段进行聚合 -->
  5. }
  6. [,"meta" : { [ <meta_data_body>] } ]? <!--元 -->
  7. [,"aggregations" : { [ <sub_aggregation>]+ } ]? <!--在聚合里面在定义子聚合 -->
  8. }
  9. [," <aggregation_name_2>" : { ... } ]* <!--聚合的名字 -->
  10. }

说明aggregations 也可简写为 aggs 第二节、第三节以及后面都是这样使用

3、指标(metric)和 桶(bucket)

虽然Elasticsearch有四种聚合方式,但在一般实际开发中,用到的比较多的就是Metric和Bucket。

(1) 桶(bucket)    


  
  1. a、简单来说桶就是满足特定条件的文档的集合。
  2. b、当聚合开始被执行,每个文档里面的值通过计算来决定符合哪个桶的条件,如果匹配到,文档将放入相应的桶并接着开始聚合操作。
  3. c、桶也可以被嵌套在其他桶里面。

(2)指标(metric) 


  
  1. a、桶能让我们划分文档到有意义的集合,但是最终我们需要的是对这些桶内的文档进行一些指标的计算。分桶是一种达到目的地的手段:它提供了一种给文档分组的方法来让
  2. 我们可以计算感兴趣的指标。
  3. b、大多数指标是简单的数学运算(如:最小值、平均值、最大值、汇总),这些是通过文档的值来计算的。

Elasticsearch --- 聚合查询 - Metric (二)


转载:https://blog.csdn.net/yexiaomodemo/article/details/108617183
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场