ElasticSearch 2 (30) - 信息聚合系列之条形图

摘要

版本

elasticsearch版本: elasticsearch-2.x

内容

聚合还有一个令人激动的特性就是能够十分容易地将它们转换成图表和图形。本章中,我们会关注于各种各样的分析并反复“蹂躏”我们示例中的数据。我们也会展现聚合可以支持的不同种类的图表。

直方图(histogram)桶特别有用,它本质上是一个条形图,如果有创建报表或分析仪表盘的经验,那么我们会毫无疑问的发现里面有一些图表是条形图。直方图是根据指定的间隔显示的,如果需要售价的直方图,我们可能指定的间隔值为 20,000。它会每 $20,000 创建新桶。然后文档会被分到对应的桶中。

对于仪表盘来说,我们希望知道每个售价区间内汽车的销量。我们还会想知道每个售价区间内汽车所带来的收入,可以通过对每个区间内已售汽车的售价求和得到。

可以用 histogram 和一个嵌套的 sum 度量得到我们想要的答案:

  GET /cars/transactions/_search{"size" : 0,"aggs":{"price":{"histogram":{ #1"field": "price","interval": 20000},"aggs":{"revenue": {"sum": { #2"field" : "price"}}}}}}

#1 histogram 桶要求两个参数:一个数值字段以及一个定义桶大小间隔字段。

#2 sum 度量嵌套在每个售价区间内,用来显示每个区间内的总收入。

如我们所见,查询是围绕 price 聚合构建的,它包含一个 histogram 桶。这个桶要求一个供计算的数值字段,以及一个间隔大小。这个间隔值定义了桶的“宽度”。20000 这个宽度表示我们得到的返回是 [0-19999, 20000-39999, ...]

接着,我们在直方图内定义嵌套的度量,这个 sum 度量会将售价范围内每个文档的售价字段里的值加起来。这可以为我们提供每个售价区间的收入,从而可以发现到底是普通家用车赚钱还是奢侈车赚钱。

响应结果如下:

  {..."aggregations": {"price": {"buckets": [{"key": 0,"doc_count": 3,"revenue": {"value": 37000}},{"key": 20000,"doc_count": 4,"revenue": {"value": 95000}},{"key": 80000,"doc_count": 1,"revenue": {"value": 80000}}]}}}

结果很容易理解,不过应该注意到直方图的键值是区间的下限。键 0 代表区间 0-19,999,键 20000 代表区间 20,000-39,999 等等。

注意

我们可能会注意到空的区间,比如:$40,000-60,000,没有出现在响应中。histogram 桶默认会忽略它,因为它有可能会导致不希望的潜在错误输出。

我们会在下一小节中讨论如何包括空桶。返回空桶(Returning Empty Buckets)

可以在图 Figure 35, “Sales and Revenue per price bracket” 中看到以上数据直方图的图形化表示。

Figure 35. Sales and Revenue per price bracket

当然,我们可以为任何聚合输出的分类和统计结果创建条形图,而不只是直方图桶。让我们以最受欢迎 10 种汽车以及它们的平均售价、标准差这些信息创建一个条形图。我们会用到 terms 桶和 extended_stats 度量:

  GET /cars/transactions/_search{"size" : 0,"aggs": {"makes": {"terms": {"field": "make","size": 10},"aggs": {"stats": {"extended_stats": {"field": "price"}}}}}}

它会按受欢迎度返回制造商列表以及它们各自的统计信息。我们会对 stats.avgstats.countstats.std_deviation 信息特别感兴趣,并用它们计算出标准误差:

std_err = std_deviation / count

创建图表如图 Figure 36, “Average price of all makes, with error bars”.

Figure 36. Average price of all makes, with error bars

参考

elastic.co:
Building Bar Charts

转载于:https://www.cnblogs.com/richaaaard/p/5314067.html

ElasticSearch 2 (30) - 信息聚合系列之条形图相关推荐

  1. ElasticSearch 2 (38) - 信息聚合系列之结束与思考

    ElasticSearch 2 (38) - 信息聚合系列之结束与思考 摘要 版本 elasticsearch版本: elasticsearch-2.x 内容 本小节涵盖了许多基本理论以及很多深入的技 ...

  2. ElasticSearch 2 (37) - 信息聚合系列之内存与延时

    ElasticSearch 2 (37) - 信息聚合系列之内存与延时 摘要 控制内存使用与延时 版本 elasticsearch版本: elasticsearch-2.x 内容 Fielddata ...

  3. ElasticSearch 2 (27) - 信息聚合系列之故事开始

    ElasticSearch 2 (27) - 信息聚合系列之故事开始 摘要 到目前为止,本书都在着重介绍搜索.对于搜索,我们有查询条件以及与查找到与条件匹配的集合.这个过程就和如大海捞针一样. 对于聚 ...

  4. ElasticSearch 2 (34) - 信息聚合系列之多值排序

    ElasticSearch 2 (34) - 信息聚合系列之多值排序 摘要 多值桶(terms.histogram 和 date_histogram)动态生成很多桶,Elasticsearch 是如何 ...

  5. ElasticSearch 2 (36) - 信息聚合系列之显著项

    ElasticSearch 2 (36) - 信息聚合系列之显著项 摘要 significant_terms(SigTerms)聚合与其他聚合都不相同.目前为止我们看到的所有聚合在本质上都是简单的数学 ...

  6. ElasticSearch 2 (16) - 深入搜索系列之近似度匹配

    ElasticSearch 2 (16) - 深入搜索系列之近似度匹配 摘要 标准的全文搜索使用TF/IDF处理文档.文档里的每个字段或一袋子词.match 查询可以告诉我们哪个袋子里面包含我们搜索的 ...

  7. 【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了

    大数据时代系统和业务每分每秒都产生成千上万的数据,其存储一定是不能通过关系型数据库了,当然因为数据的持久性也不能存储到内存型Nosql数据库Redis中,我们通常会将这些数据存储在能够不丢失数据的非关 ...

  8. ElasticSearch 2 (21) - 语言处理系列之单词识别

    ElasticSearch 2 (21) - 语言处理系列之单词识别 摘要 一个英语单词相对容易识别:因为英语单词是被空格或(某些)标点符号隔开的.但在英语中也有反例:you're 这个词是一个单词还 ...

  9. ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误

    ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误 摘要 我们喜欢在对结构化数据(如:日期和价格)做查询时,结果只返回那些能精确匹配的文档.但是,好的全文搜索不应该有这样的限制 ...

  10. ElasticSearch 2 (20) - 语言处理系列之如何开始

    ElasticSearch 2 (20) - 语言处理系列之如何开始 摘要 Elasticsearch 配备了一组语言分析器,为世界上大多数常见的语言提供良好的现成基础支持. 阿拉伯语.亚美尼亚语,巴 ...

最新文章

  1. 垃圾软件!动不动就扣费!| 今日最佳
  2. 三种方法实现轮播图配置,史上最简方法~
  3. 一文了解GaussDB 200的产品架构、数据流程、组网方案、服务部署原则、企业级增强特性......
  4. Linux 安装Nginx详细图解教程
  5. JQuery Ajax调用asp.net后台方法
  6. 程序员至少一半时间用于测试
  7. 单片机原理及应用实验报告
  8. 夫水之积也不厚,则其负大舟也无力
  9. html如何设置自动点击事件,使用javascript给html元素添加click事件
  10. element的上传如何获取路径_element Ui 上传组件upload提交的文件目录 集成进度条样式...
  11. ue4是什么意思_u3d和ue4的区别是什么
  12. C语言刷题6:给定b的值,输入a和m,求a*b和a^m的值
  13. 全球打工人的抗争!谷歌员工希望更公平,国内只求告别996
  14. Matlab滤波器设计示例
  15. 校园无线网登陆成功,但打开浏览器不能上网怎么办?标签上显示注销页怎么办?
  16. mysql-下划线转驼峰-转载
  17. 手机信号塔机房里的服务器,各种通信铁塔和机房类型介绍,别再傻傻分不清了...
  18. 新南威尔士量子计算机专业,新南威尔士大学专业排名一览及最强专业推荐(QS世界大学排名)...
  19. python练习题:045:正常血压
  20. 2022年哪款超短焦投影仪性价比最高?当贝超短焦激光投影仪U1测评值得买

热门文章

  1. 大屏scroll滚动轴样式
  2. 关于Java Web工程中web.xml文件
  3. Fancybox—Fancybox的API和配置选项说明
  4. 百度地图,你必须知道的自定义Marker图标方法
  5. php+不要科学记数,php怎么设置不用科学计数法?
  6. puml绘制思维导图_免费在线思维导图神器 简单又漂亮 比Wodrd好用很多
  7. python标点符号全是英文吗_python 过滤中文、英文标点特殊符号
  8. python建筑工程中的应用_Python最佳工程实践,建立一个完美的工程项目
  9. 重置mysql8.0.16的root密码
  10. Navicat for MySQL 连接 Mysql 8.0.16 时报错1251- Client does not support.....的解决办法