白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格

20190806092132811.jpg

概述


继续跟中华石杉老师学习ES,第33篇

课程地址https://www.roncoo.com/view/55


先回顾一下,白话Elasticsearch32-深入聚合数据分析之案例实战Terms Aggregation 中演示了Terms Aggregation ,其实就是分组操作 ,根据某个字段将数据分到不同的bucket中,DSL及返回结果如下


20190822113733581.png



按照color去分bucket,可以拿到每个color bucket中的数量,这个仅仅只是一个bucket操作,返回结果中 包含key 和 doc_count 。 doc_count可以理解为es的bucket操作默认执行的一个内置metric(其实不是)。


这里我们将学习下除了bucket操作(分组),还要对每个bucket执行一个metric聚合统计操作


官方说明Avg Aggregation

官方说明: Avg Aggregation



20190822114755511.png


更多说明请参考官网


案例:统计每种颜色电视平均价格

原始数据:


20190823153138707.png


思路:

  • 先按照颜色进行bucket分组操作
  • 再对每个bucket执行一个metric聚合统计操作

先按照颜色进行bucket分组


GET /tvs/sales/_search
{
  "size": 0 ,
  "aggs": {
    "group_by_color": {
      "terms": {
        "field": "color"
      }
    }
  }
}

20190822150334475.png


紧接着: 在一个aggs执行的bucket操作(terms),平级的json结构下,再加一个aggs,这个第二个aggs内部,同样取个名字,执行一个metric操作,avg,对之前的每个bucket中的数据的指定的field,price field,求一个平均值


全部的DSL如下:

GET /tvs/sales/_search
{
  "size": 0 ,
  "aggs": {
    "group_by_color": {
      "terms": {
        "field": "color"
      },
      "aggs":{
        "avg_price":{
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

201908221506207.png


请求DSL 分析下:

"aggs": { 
   "avg_price": { 
      "avg": {
         "field": "price" 
      }
   }


就是一个metric,就是一个对一个bucket分组操作之后,对每个bucket都要执行的一个metric


返回结果分析下:


20190822150836424.png

  • buckets: key (分组关键字)和doc_count (数量)
  • avg_price:我们自己取的metric aggs的名字
  • value:我们的metric计算的结果,每个bucket中的数据的price字段求平均值后的结果


类比下我们常用的SQL:

select avg(price) from tvs.sales group by color


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6天前
|
SQL 安全 数据挖掘
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
Elasticsearch聚合查询用于复杂数据分析,包括统计空值率。示例展示了如何计算字段`my_field`非空非零文档的百分比。查询分为三步:总文档数计数、符合条件文档数计数及计算百分比。聚合概念涵盖度量、桶和管道聚合。脚本在聚合中用于动态计算。常见聚合类型如`sum`、`avg`、`date_histogram`等。组合使用可实现多值统计、嵌套聚合和空值率计算。[阅读更多](https://zhangfeidezhu.com/?p=515)
69 0
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
|
1月前
|
NoSQL 数据挖掘 数据处理
【MongoDB 专栏】MongoDB 聚合管道:数据分析利器
【5月更文挑战第10天】MongoDB的聚合管道是数据分析利器,它通过一系列阶段(如\$match、\$group、\$project等)处理和转换数据,实现过滤、分组、统计等功能。适用于复杂的数据分析任务,能高效处理大量数据并提供实时洞察。在电商、日志和金融等领域有广泛应用。注意索引优化和避免过度聚合,以确保准确性和效率。借助聚合管道,我们可以深入挖掘数据价值,驱动业务发展。
【MongoDB 专栏】MongoDB 聚合管道:数据分析利器
|
12天前
|
存储 JSON 搜索推荐
Springboot2.x整合ElasticSearch7.x实战(三)
Springboot2.x整合ElasticSearch7.x实战(三)
14 0
|
12天前
|
存储 自然语言处理 关系型数据库
Springboot2.x整合ElasticSearch7.x实战(二)
Springboot2.x整合ElasticSearch7.x实战(二)
13 0
|
12天前
|
搜索推荐 数据可视化 Java
Springboot2.x整合ElasticSearch7.x实战(一)
Springboot2.x整合ElasticSearch7.x实战(一)
12 0
|
1月前
|
人工智能 自然语言处理 开发者
Langchain 与 Elasticsearch:创新数据检索的融合实战
Langchain 与 Elasticsearch:创新数据检索的融合实战
56 10
|
1月前
|
自然语言处理 测试技术 网络安全
ElasticSearch7最新实战文档-附带logstash同步方案
ElasticSearch7最新实战文档-附带logstash同步方案
25 0
|
1月前
|
canal 自然语言处理 关系型数据库
Elasticsearch 线上实战问题及解决方案探讨
Elasticsearch 线上实战问题及解决方案探讨
26 0
|
1月前
|
Java Maven 开发工具
【ElasticSearch 】IK 分词器安装
【ElasticSearch 】IK 分词器安装
44 1
|
12天前
Elasticsearch安装配置文件
Elasticsearch安装配置文件
15 0

热门文章

最新文章