文章目录

  • 概述
  • Terms Aggregation官方文档
  • 案例一 : 统计哪种颜色电视销量最高
    • 模拟数据
    • 统计哪种颜色的电视销量最高
    • size 参数 示例
      • 外层size
      • terms节点下的size


概述

继续跟中华石杉老师学习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" }

原始数据:


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

DSL


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

解读:

  • size:只获取聚合结果,而不要执行聚合的原始数据
  • aggs:固定语法,要对一份数据执行分组聚合操作
  • popular_colors:就是对每个aggs,都要起一个名字,自定义,叫啥都行
  • terms:根据字段的值进行分组
  • field:根据指定的字段的值进行分组

类比官方介绍

返回结果:

  • hits.hits:我们指定了size是0,所以hits.hits就是空的,否则会把执行聚合的那些原始数据给你返回回来
  • aggregations:聚合结果
  • popular_color:我们指定的某个聚合的名称
  • buckets:根据我们指定的field划分出的buckets
  • key:每个bucket对应的那个值
  • doc_count:这个bucket分组内,有多少个数据

类比官网说明

每种颜色对应的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条执行聚合的那些原始数据

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

terms节点下的size

返回了bucket 中1条数据。

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

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

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

    文章目录 概述 官方说明Avg Aggregation 案例:统计每种颜色电视平均价格 概述 继续跟中华石杉老师学习ES,第33篇 课程地址: https://www.roncoo.com/view/ ...

  2. 白话Elasticsearch34-深入聚合数据分析之案例实战bucket嵌套实现颜色+品牌的多层下钻分析

    文章目录 概述 案例 需求 解决 Step1.对每种颜色进行bucket分组 Step2.对每种颜色进行bucket分组 , 然后对每个分组再次计算平均价格 Step3.对每种颜色进行bucket分组 ...

  3. 白话Elasticsearch37-深入聚合数据分析之案例实战Date Histogram Aggregation:统计每月电视销量

    文章目录 概述 官方说明 实例: 统计每月电视销量,没有销量的月份也要统计 概述 继续跟中华石杉老师学习ES,第37篇 课程地址: https://www.roncoo.com/view/55 官方说 ...

  4. 白话Elasticsearch35-深入聚合数据分析之案例实战更多metrics用法:统计每种颜色电视最大最小价格

    文章目录 概述 官方指导 Metrics Aggregations Min Aggregation Max Aggregation Sum Aggregation 案例:统计每种颜色电视最大最小价格 ...

  5. 白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量

    文章目录 概述 案例 示例 概述 继续跟中华石杉老师学习ES,第39篇 课程地址: https://www.roncoo.com/view/55 案例 需求: 统计指定品牌下每个颜色的销量 原始数据: ...

  6. 白话Elasticsearch36-深入聚合数据分析之案例实战Histogram Aggregation:按价格区间统计电视销量和销售额

    文章目录 概述 官方说明 案例 概述 继续跟中华石杉老师学习ES,第36篇 课程地址: https://www.roncoo.com/view/55 官方说明 Histogram Aggregatio ...

  7. 白话Elasticsearch43-深入聚合数据分析之案例实战__排序:按每种颜色的平均销售额升序排序

    文章目录 概述 官方说明 案例 求 每种颜色的平均销售额 按每种颜色的平均销售额升序排序 概述 继续跟中华石杉老师学习ES,第43篇 课程地址: https://www.roncoo.com/view ...

  8. 白话Elasticsearch42-深入聚合数据分析之案例实战__bucket filter:统计牌品最近一个月的平均价格(Filter Aggregation)

    文章目录 概述 官方说明 案例 概述 继续跟中华石杉老师学习ES,第41篇 课程地址: https://www.roncoo.com/view/55 官方说明 Filter Aggregation:戳 ...

  9. 白话Elasticsearch40-深入聚合数据分析之案例实战_Global Aggregation:单个品牌与所有品牌平均价格对比

    文章目录 概述 Global Aggregation 案例 概述 继续跟中华石杉老师学习ES,第40篇 课程地址: https://www.roncoo.com/view/55 Global Aggr ...

最新文章

  1. **Java有哪些悲观锁的实现_阿里秋招Java研发工程师岗:来自校友的面试还原(已拿Offer)...
  2. Java8新特性-接口中的静态方法与默认方法
  3. 大数据技术与应用实训心得_GXCGQ16D传感器与检测技术应用实训考核设备
  4. [html] 如何禁止html页面缓存?
  5. props传递对象_vue-父组件传值props(对象)给子组件
  6. java中char类型可以存储两个中文字符吗
  7. 计算机基础与应用演示文稿教案,计算机应用基础教案82修饰演示文稿.pdf
  8. vue网页分享生成二维码微信扫一扫进行分享
  9. 苹果cmsv10黑色炫酷自适应在线视频网站简约模板源码
  10. 手把手教你制作一块Linux开发板(基于Planck-pi)
  11. 软件测试之如何测试数据?
  12. 使用 TestFlight 进行 iOS App 内测
  13. python基础入门(变量)
  14. 牛客小白月赛28 C-单词记忆方法——dfs
  15. 因数据迁移导致跨库连接失效的解决办法
  16. c语言求1平方根,c语言求平方根公式
  17. 深剖函数重载——C++基础篇
  18. 斐讯k2为什么不能加虚拟服务器,斐讯K2路由器怎么设置桥接_斐讯K2无线中继设置教程-192路由网...
  19. unity挂机游戏技术指南 安卓版
  20. linux将文件 abc 更名为 bca.,Linux命令行操作文本文件

热门文章

  1. Android 9.0 内核编译实战(以一加6为例)
  2. php取汉字第一个字,php---------取汉字的第一个字的首字母
  3. c++ 析构函数 ~
  4. es每次结果不一样_电子血压计不准!每次测血压都不一样……
  5. vue init webpack缺少标识符_vue 如何从单页应用改造成多页应用_vue.js
  6. tkinter笔记:通过点击button 控制标签的显示 (莫烦python笔记)
  7. linux实战应用案例: 如何在 Linux 安装 MySQL 8 数据库?(图文详细教程)
  8. 万字长文,一文读懂Linux的常规操作(墙裂建议收藏)
  9. MATLAB从入门到精通-matlab中符号推导应用及相关技巧
  10. LeetCode-剑指 Offer 18. 删除链表的节点