ElasticSearch_聚合成桶、桶内度量

本文详细介绍了ElasticSearch的聚合功能,包括桶(bucket)和度量(metrics)的概念。通过聚合可以实现数据的统计和分析,如品牌手机的受欢迎程度、价格分布等。文中演示了如何按照颜色、制造商进行分桶,以及计算平均价格等度量,还涉及了阶梯分桶Histogram的使用方法。
摘要由CSDN通过智能技术生成

ElasticSearch_聚合成桶、桶内度量

本文承接自

ElasticSearch分布式搜索引擎简介及其增删改查那些事

ElasticSearch分布式搜索引擎-基本查询

ElasticSearch分布式搜索引擎高级查询都在这了

聚合可以让我们极其方便的实现对数据的统计、分析。例如:

  • 什么品牌的手机最受欢迎?
  • 这些手机的平均价格、最高价格、最低价格?
  • 这些手机每月的销售情况如何?

实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现实时搜索效果

Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫,一个叫度量

桶(bucket)

桶的作用,是按照某种方式对数据进行分组,每一组数据在ES中称为一个,例如我们根据国籍对人划分,可以得到中国桶英国桶日本桶……或者我们按照年龄段对人进行划分:010,1020,2030,3040等

Elasticsearch中提供的划分桶的方式有很多:

  • Date Histogram Aggregation:根据日期阶梯分组,例如给定阶梯为周,会自动每周分为一组
  • Histogram Aggregation:根据数值阶梯分组,与日期类似
  • Terms Aggregation:根据词条内容分组,词条内容完全匹配的为一组
  • Range Aggregation:数值和日期的范围分组,指定开始和结束,然后按段分组
  • ……

bucket aggregations 只负责对数据进行分组,并不进行计算,因此往往bucket中往往会嵌套另一种聚合:metrics aggregations即度量

度量(metrics)

分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量

比较常用的一些度量聚合方式:

  • Avg Aggregation:求平均值
  • Max Aggregation:求最大值
  • Min Aggregation:求最小值
  • Percentiles Aggregation:求百分比
  • Stats Aggregation:同时返回avg、max、min、sum、count等
  • Sum Aggregation:求和
  • Top hits Aggregation:求前几
  • Value Count Aggregation:求总数
  • ……

为了测试聚合,我们先批量导入一些数据

PUT /cars
{
   
  "settings": {
   
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
   
    "transactions": {
   
      "properties": {
   
        "color": {
   
          "type": "keyword"
        },
        "make": {
   
          "type": "keyword"
        }
      }
    }
  }
}
  • price代表价格

  • make代表制造商

注意:在ES中,需要进行聚合、排序、过滤的字段其处理方式比较特殊,因此不能被分词。这里我们将color和make这两个文字类型的字段设置为keyword类型,这个类型不会被分词,将来就可以参与聚合

为了测试聚合,我们先批量导入一些数据

创建索引

PUT /cars
{
   
  "settings": {
   
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
   
    "transactions": {
   
      "properties": {
   
        "color": {
   
          "type": "keyword"
        },
        "make": {
   
          "type": "keyword"
        }
      }
    }
  }
}

导入数据:

POST /cars/transactions/_bulk
{
    "index": {
   }}
{
    "price" : 10000, "color" : "red", "make" : "honda", "sold" : "2014-10-28" }
{
    "index": {
   }}
{
    "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
{
    "index": {
   }}
{
    "price" : 30000, "color" : "green", "make" : "ford", "sold" : "2014-05-18" }
{
    "index": {
   }}
{
    "price" : 15000, "color&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值