带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(10)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(10)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(9) https://developer.aliyun.com/article/1229232


4、直方图聚合 histogram 和日期直方图聚合 date_histogram

 

1)基础用法

直方图聚合通常用来查看文档的分布情况,比如对产品价格进行间隔为1000进行分组聚合:


GET order/_search
{
  "aggs": {
    "histogram_test": {        
     "histogram": {         //聚合类型
       "field": "price",
       "interval": 1000        //分组间隔
     }     
    }
  }
}
结果:
"aggregations" : {
    "histogram_test" : {
      "buckets" : [
        {
          "key" : 7000.0,
          "doc_count" : 2
        },
        {
          "key" : 8000.0,
          "doc_count" : 2
        },
        {
          "key" : 9000.0,
          "doc_count" : 2
        }
      ]
    }
  }
}

通过结果可以看到价格为7000、8000、9000的文档数量都是2个。如果聚合结果很多,而我们又更关心数量多的文档情况,那么此时可以通过设置 min_doc_count(最小文档计数)参数来限制文档数小于多少的不展示。

 

一般来说,文档的分桶结果会基于数据本身。例如你的目的是要0-500的价格分桶,而数据只有100以上的,那么返回结果不存在100以下的桶。此时如果有此类需求,可以通过extended_bounds设置桶的最大值和最小值,强制返回聚合数量为0的结果。可以通过这种order更改计算结果的排序规则,_count 代表按照 doc_count 的值进行排序,默认为 desc; _key 代表按照 key 的字母顺序进行排序。

 

Date histogram 日期直方图的用法与 histogram 基本一致,只不过 interval 间隔上支持了日期的表达式。支持的表达式为: `year`, `quarter`, `month`, `week`, `day`, `hour`, `minute`, `second`。也可以使用固定间隔,支持表达式为:milliseconds (ms)、seconds (s)、minutes (m)、hours (h)、days (d)。返回结果支持使用 "format":"yyyy-MM-dd" 进行格式化。

 

5、范围聚合 range、时间范围聚合 date_range、ip范围聚合ip_range

 

1)基础用法

 

范围聚合通常用来统计用户自定义范围内的文档数量。通过 from 和 to 定义范围边界,结果包含 from 值但排除 to 值。

 

例如对产品价格7000-8000做聚合,可以看到结果命中了2个文档。


GET order/_search
{
  "aggs": {
    "range_test": {
    "range": {
      "field": "price",
      "ranges": [
    870         >   三、产品能力
        {
          "from": 7000,
          "to": 8000
        }
      ]
    }     
    }
  }
}
聚合结果:
"aggregations" : {
    "range_test" : {
      "buckets" : [
        {
          "key" : "7000.0-8000.0",
          "from" : 7000.0,
          "to" : 8000.0,
          "doc_count" : 2
        }
      ]
    }
  }

Elasticsearch 为了满足各类用户的需求,也提供了时间范围聚合 date_range、ip 范围聚合

ip_range 分别支持对日期和 ipv4 类型字段的聚合统计。

 

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(11) https://developer.aliyun.com/article/1229229

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(2)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(2)
|
编解码 算法
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(6)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(6)
105 0
|
存储 SQL 数据挖掘
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(1)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(1)
|
存储 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(9)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(9)
|
存储 算法 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(4)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(4)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(11)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(11)
106 0
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(8)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(8)
106 0
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(5)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(5)
|
资源调度
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(7)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(7)
|
数据可视化 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(13)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(13)