ElasticSearch教程——cardinality(去重)算法之优化内存开销以及HLL算法
ElasticSearch汇总请查看:ElasticSearch教程——汇总篇
说明,一般使用第一种和第二种方法,很少使用第三种HLL优化(效果不是特别明显)
1、cardinality语法
es,去重,cartinality metric,对每个bucket中的指定的field进行去重,取去重后的count,类似于count(distcint)
cardinality,count(distinct),5%的错误率,性能在100ms左右
{"size" : 0,"aggs" : {"months" : {"date_histogram": {"field": "sold_date","interval": "month"},"aggs": {"distinct_colors" : {"cardinality" : {"field" : "brand"}}}}}
}
{"took": 70,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 8,"max_score": 0,"hits": []},"aggregations": {"group_by_sold_date": {"buckets": [{"key_as_string": "2016-05-01T00:00:00.000Z","key": 1462060800000,"doc_count": 1,"distinct_brand_cnt": {"value": 1}},{"key_as_string": "2016-06-01T00:00:00.000Z","key": 1464739200000,"doc_count": 0,"distinct_brand_cnt": {"value": 0}},{"key_as_string": "2016-07-01T00:00:00.000Z","key": 1467331200000,"doc_count": 1,"distinct_brand_cnt": {"value": 1}},{"key_as_string": "2016-08-01T00:00:00.000Z","key": 1470009600000,"doc_count": 1,"distinct_brand_cnt": {"value": 1}},{"key_as_string": "2016-09-01T00:00:00.000Z","key": 1472688000000,"doc_count": 0,"distinct_brand_cnt": {"value": 0}},{"key_as_string": "2016-10-01T00:00:00.000Z","key": 1475280000000,"doc_count": 1,"distinct_brand_cnt": {"value": 1}},{"key_as_string": "2016-11-01T00:00:00.000Z","key": 1477958400000,"doc_count": 2,"distinct_brand_cnt": {"value": 1}},{"key_as_string": "2016-12-01T00:00:00.000Z","key": 1480550400000,"doc_count": 0,"distinct_brand_cnt": {"value": 0}},{"key_as_string": "2017-01-01T00:00:00.000Z","key": 1483228800000,"doc_count": 1,"distinct_brand_cnt": {"value": 1}},{"key_as_string": "2017-02-01T00:00:00.000Z","key": 1485907200000,"doc_count": 1,"distinct_brand_cnt": {"value": 1}}]}}
}
2、precision_threshold优化准确率和内存开销
GET /tvs/sales/_search
{"size" : 0,"aggs" : {"distinct_brand" : {"cardinality" : {"field" : "brand","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%准确
100,数百万的unique value,错误率在5%以内
precision_threshold,值设置的越大,占用内存越大,可以确保更多unique value的场景下,100%的准确
field,去重,count,这时候,unique value,10000,
precision_threshold=10000,
10000 * 8 = 80000 个byte,
80000 / 1024 ≈ 80KB
3、HyperLogLog++ (HLL)算法性能优化
cardinality底层算法:HLL算法,HLL算法的性能
会对所有的uqniue value取hash值,通过hash值近似去求distcint count,误差
默认情况下,发送一个cardinality请求的时候,会动态地对所有的field value,取hash值; 将取hash值的操作,前移到建立索引的时候
创建索引时, brand field type 增加创建其hash值索引
注:这边的“murmur3”是一种取hash值的算法
PUT /tvs/
{"mappings": {"sales": {"properties": {"brand": {"type": "text","fields": {"hash": {"type": "murmur3" }}}}}}
}
根据hash值作引进行cartinality metric
GET /tvs/sales/_search
{"size" : 0,"aggs" : {"distinct_brand" : {"cardinality" : {"field" : "brand.hash","precision_threshold" : 100 }}}
}
ElasticSearch教程——cardinality(去重)算法之优化内存开销以及HLL算法相关推荐
- 白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法
文章目录 概述 官方说明 precision_threshold优化准确率和内存开销 HyperLogLog++ (HLL)算法性能优化 概述 继续跟中华石杉老师学习ES,第47篇 课程地址: htt ...
- 49深入聚合数据分析_cardinality算法之优化内存开销以及HLL算法
cardinality=count(distinct),5%的错误率,性能在100ms左右,如何对cardinality进行优化呢? 1.precision_threshold优化准确率和内存开销 G ...
- 49.ardinality算法之优化内存开销以及HLL算法
主要知识点 precision_threshold参数的理解 HLL算法优化(hash) cardinality,count(distinct),5%的错误率,性能在100ms左右 一.precisi ...
- ElasticSearch cardinality基数 算法优化内存开销及HLL算法
2019独角兽企业重金招聘Python工程师标准>>> cardinality 可用于聚合函数,可计算某个字段的基数,即该字段的distinct值,它基于HLL算法来实现的.HHL会 ...
- DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优
DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优 目录 基于keras对LSTM算法进行超参数调优 1.可视化LSTM模型的loss和acc曲线
- Python实现猎人猎物优化算法(HPO)优化支持向量机回归模型(SVR算法)项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer ...
- dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少
算法实现步骤: a.初始时,只包括源点,即S = {v},v的距离为0.U包含除v以外的其他顶点,即:U ={其余顶点},若v与U中顶点u有边,则(u,v)为正常权值,若u不是v的出边邻接点,则(u, ...
- dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少(示例代码)...
算法实现步骤: a.初始时,只包括源点,即S = {v},v的距离为0.U包含除v以外的其他顶点,即:U ={其余顶点},若v与U中顶点u有边,则(u,v)为正常权值,若u不是v的出边邻接点,则(u, ...
- ElasticSearch教程——汇总篇
环境搭建篇 ElasticSearch教程--安装 ElasticSearch教程--安装Head插件 ElasticSearch教程--安装IK分词器插件 ElasticSearch教程--安装Ki ...
最新文章
- ARM研发进展与企业清单
- 解决Oracle数据库不能导出空表的问题
- 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
- 201521123122 《java程序设计》第十三周学习总结
- VTK:PolyData之ColorCellsWithRGB
- shell脚本每日一练(三)
- java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...
- 如何对AWS RDS SQL Server数据库进行分类
- 拼多多回应“特斯拉拒绝交付Model 3”;阿里云称京西公司将改名;VS Code 1.48发布| 极客头条...
- html5+桌面推送,HTML5 Web Notifications 桌面推送小记
- 初识DOM(文档对象模型)
- ai-人工智能的本质和未来_带有人工智能的动画电子设备-带来难以想象的结果...
- c语言输出语句形式,c语言输出语句是什么
- 大数据常用的架构有哪些
- 宏病毒的研究与实例分析04——实战分析
- 计算机类专业都有什么区别?
- 计算机驱动程序的安装过程,u盘驱动程序安装,教您如何安装u盘驱动程序
- 想去微软工作吗?这些岗位年薪超过1100000元
- 06.破解Windows7密码
- MuJoCo - hybrid system的建模与控制