文章目录

  • 概述
  • 官方说明
  • precision_threshold优化准确率和内存开销
  • HyperLogLog++ (HLL)算法性能优化


概述

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

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


官方说明

Cardinality Aggregation:戳这里


precision_threshold优化准确率和内存开销

原始数据:

统计下有多少个不同的品牌

DSL:

GET /tvs/sales/_search
{"size" : 0,"aggs" : {"distinct_brand" : {"cardinality" : {"field" : "brand","precision_threshold" : 100 }}}
}

注意下 "precision_threshold" : 100 的意思是: brand去重,如果brand的unique value,在100个以内,小米,长虹,三星,TCL,HTL。。。 在多少个unique value以内,cardinality,几乎保证100%准确 。

cardinality算法,会占用precision_threshold * 8 byte 内存消耗,100 * 8 = 800个字节 占用内存很小。。。而且unique value如果的确在值以内,那么可以确保100%准确

precision_threshold,值设置的越大,占用内存越大, 假设设置 1000,那么1000 * 8 = 8000 / 1000 = 8KB,可以确保更多unique value的场景下,100%的准确

field,去重,count,这时候,unique value,10000, precision_threshold=10000,10000 * 8 = 80000个byte,80KB


HyperLogLog++ (HLL)算法性能优化

cardinality底层算法:HLL算法,HLL算法的性能会对所有的uqniue value取hash值,通过hash值近似去求distcint count,存在误差 .

默认情况下,发送一个cardinality请求的时候,会动态地对所有的field value,取hash值;

优化的话: 将取hash值的操作,前移到建立索引的时候 ,如下

PUT /tvs/
{"mappings": {"sales": {"properties": {"brand": {"type": "text","fields": {"hash": {"type": "murmur3" }}}}}}
}

这样在执行同样的查询的话,就不会在请求的时候执行hash值了。

GET /tvs/sales/_search
{"size" : 0,"aggs" : {"distinct_brand" : {"cardinality" : {"field" : "brand.hash","precision_threshold" : 100 }}}
}

白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法相关推荐

  1. 49深入聚合数据分析_cardinality算法之优化内存开销以及HLL算法

    cardinality=count(distinct),5%的错误率,性能在100ms左右,如何对cardinality进行优化呢? 1.precision_threshold优化准确率和内存开销 G ...

  2. ElasticSearch教程——cardinality(去重)算法之优化内存开销以及HLL算法

    ElasticSearch汇总请查看:ElasticSearch教程--汇总篇 说明,一般使用第一种和第二种方法,很少使用第三种HLL优化(效果不是特别明显) 1.cardinality语法 es,去 ...

  3. ElasticSearch cardinality基数 算法优化内存开销及HLL算法

    2019独角兽企业重金招聘Python工程师标准>>> cardinality 可用于聚合函数,可计算某个字段的基数,即该字段的distinct值,它基于HLL算法来实现的.HHL会 ...

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

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

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

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

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

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

  7. 白话Elasticsearch51-深入聚合数据分析之text field聚合以及fielddata原理

    文章目录 概述 官网 示例 对于分词的field执行aggregation,报错 给分词的field,设置fielddata=true,可执行 使用field.keyword,对分词的field进行聚 ...

  8. 白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计

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

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

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

最新文章

  1. 四次面试:程序员越来越悲催了
  2. 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】
  3. 使用yeoman搭建脚手架并发布到npm
  4. Android菜单—Menu
  5. 在AngularJS应用中实现认证授权
  6. 利用max-height适应多尺寸屏幕的下拉动画
  7. ELK+Kafka 企业日志收集平台(二)
  8. nSamplesPerSec和nAvgBytesPerSec
  9. nginx无法加载css
  10. 软件设计原则(七)合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)
  11. 正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数
  12. 新版征信对信用卡养卡会有重大影响吗?
  13. 【Docker 命令】- images命令
  14. ant配置Cesium,纯javascript3d地图类库
  15. notepad++正则表达式使用
  16. 基于C++的Qt网络编程——聊天客户端
  17. [读书笔记] 蔡康永的说话之道
  18. 自定义九宫格控件NineGridLayout ,实现微信朋友圈图片九宫格显示
  19. FreePic2Pdf 制作书签
  20. 全局钩子(hook鼠标键盘消息)

热门文章

  1. linux集群巡检,Linux巡检
  2. ios模拟器装ipa包_在iOS开发的时候如何在模拟器中安装APP
  3. 两个多精度十进制数加法程序设计_翁恺老师的程序设计入门——C语言 第四周习题...
  4. 66. Plus One
  5. 以MATLAB的方式实现微积分问题的计算机求解问题及解决方案集锦(二)
  6. 随机样本选择——快速求解机器学习中的优化问题
  7. MATLAB基本操作(二):数组中操作
  8. mysql 临时索引_MySQL select in 语句未使用索引,产生磁盘临时表,导致 crash
  9. 如何快将数据集划分为train、val(Python3代码模板)
  10. Python入门100题 | 第042题