白话Elasticsearch32-深入聚合数据分析之案例实战Terms Aggs 统计哪种颜色电视销量最高

简介: 白话Elasticsearch32-深入聚合数据分析之案例实战Terms Aggs 统计哪种颜色电视销量最高

20190806092132811.jpg

概述

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

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


Terms Aggregation官方文档

官方文档: 戳这里

详细说明,参考官网即可,下面我们用示例来演示下


案例一 : 统计哪种颜色电视销量最高

模拟数据

创建索引

PUT /tvs
{
  "mappings": {
    "sales": {
      "properties": {
        "price": {
          "type": "long"
        },
        "color": {
          "type": "keyword"
        },
        "brand": {
          "type": "keyword"
        },
        "sold_date": {
          "type": "date"
        }
      }
    }
  }
}


模拟一批数据

POST /tvs/sales/_bulk
{ "index": {}}
{ "price" : 1000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-10-28" }
{ "index": {}}
{ "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }
{ "index": {}}
{ "price" : 3000, "color" : "绿色", "brand" : "小米", "sold_date" : "2016-05-18" }
{ "index": {}}
{ "price" : 1500, "color" : "蓝色", "brand" : "TCL", "sold_date" : "2016-07-02" }
{ "index": {}}
{ "price" : 1200, "color" : "绿色", "brand" : "TCL", "sold_date" : "2016-08-19" }
{ "index": {}}
{ "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }
{ "index": {}}
{ "price" : 8000, "color" : "红色", "brand" : "三星", "sold_date" : "2017-01-01" }
{ "index": {}}
{ "price" : 2500, "color" : "蓝色", "brand" : "小米", "sold_date" : "2017-02-12" }


原始数据:

20190823153138707.png


统计哪种颜色的电视销量最高

DSL


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


解读:

size:只获取聚合结果,而不要执行聚合的原始数据

aggs:固定语法,要对一份数据执行分组聚合操作

popular_colors:就是对每个aggs,都要起一个名字,自定义,叫啥都行

terms:根据字段的值进行分组

field:根据指定的字段的值进行分组

类比官方介绍

20190821224048317.png


返回结果:


20190821163555642.png


hits.hits:我们指定了size是0,所以hits.hits就是空的,否则会把执行聚合的那些原始数据给你返回回来

aggregations:聚合结果

popular_color:我们指定的某个聚合的名称

buckets:根据我们指定的field划分出的buckets

key:每个bucket对应的那个值

doc_count:这个bucket分组内,有多少个数据


类比官网说明


20190821225036345.png

每种颜色对应的bucket中的数据的数量,其实就是这种颜色的销量

默认的排序规则:按照doc_count降序排序


size 参数 示例

外层size

当我们 外层不加size的时候,会返回执行聚合的那些原始数据


GET /tvs/sales/_search
{
  "aggs": {
    "popular_color": {
      "terms": {
        "field": "color"
      }
    }
  }
}

返回

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 8,
    "max_score": 1,
    "hits": [
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "QzGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 2000,
          "color": "红色",
          "brand": "长虹",
          "sold_date": "2016-11-05"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "PzGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 2000,
          "color": "红色",
          "brand": "长虹",
          "sold_date": "2016-11-05"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "QDGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 3000,
          "color": "绿色",
          "brand": "小米",
          "sold_date": "2016-05-18"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "QjGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 1200,
          "color": "绿色",
          "brand": "TCL",
          "sold_date": "2016-08-19"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "RDGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 8000,
          "color": "红色",
          "brand": "三星",
          "sold_date": "2017-01-01"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "PjGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 1000,
          "color": "红色",
          "brand": "长虹",
          "sold_date": "2016-10-28"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "QTGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 1500,
          "color": "蓝色",
          "brand": "TCL",
          "sold_date": "2016-07-02"
        }
      },
      {
        "_index": "tvs",
        "_type": "sales",
        "_id": "RTGrtGwBCp8vhw_gCmb9",
        "_score": 1,
        "_source": {
          "price": 2500,
          "color": "蓝色",
          "brand": "小米",
          "sold_date": "2017-02-12"
        }
      }
    ]
  },
  "aggregations": {
    "popular_color": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "红色",
          "doc_count": 4
        },
        {
          "key": "绿色",
          "doc_count": 2
        },
        {
          "key": "蓝色",
          "doc_count": 2
        }
      ]
    }
  }
}


当把外层的 size设置为1 ,返回1条执行聚合的那些原始数据


20190821231420264.png

设置为0 ,不返回执行聚合的那些原始数据


20190821231515176.png


terms节点下的size


20190821231625461.png


返回了bucket 中1条数据。

20190821231706415.png


. 不设置时,返回全部的聚合结果 。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
2月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
843 6
|
8月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
2107 1
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
872 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
机器学习/深度学习 存储 搜索推荐
Elasticsearch与深度学习框架的集成案例研究
Elasticsearch 是一个强大的搜索引擎和分析引擎,广泛应用于实时数据处理和全文搜索。深度学习框架如 TensorFlow 和 PyTorch 则被用来构建复杂的机器学习模型。本文将探讨如何将 Elasticsearch 与这些深度学习框架集成,以实现高级的数据分析和预测任务。
280 0
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
855 4
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
255 2
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
356 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
1159 4
数据分析的 10 个最佳 Python 库
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
148 3

热门文章

最新文章