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算法相关推荐

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

    文章目录 概述 官方说明 precision_threshold优化准确率和内存开销 HyperLogLog++ (HLL)算法性能优化 概述 继续跟中华石杉老师学习ES,第47篇 课程地址: htt ...

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

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

  3. 49.ardinality算法之优化内存开销以及HLL算法

    主要知识点 precision_threshold参数的理解 HLL算法优化(hash) cardinality,count(distinct),5%的错误率,性能在100ms左右 一.precisi ...

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

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

  5. DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优

    DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优 目录 基于keras对LSTM算法进行超参数调优 1.可视化LSTM模型的loss和acc曲线

  6. Python实现猎人猎物优化算法(HPO)优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer ...

  7. dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少

    算法实现步骤: a.初始时,只包括源点,即S = {v},v的距离为0.U包含除v以外的其他顶点,即:U ={其余顶点},若v与U中顶点u有边,则(u,v)为正常权值,若u不是v的出边邻接点,则(u, ...

  8. dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少(示例代码)...

    算法实现步骤: a.初始时,只包括源点,即S = {v},v的距离为0.U包含除v以外的其他顶点,即:U ={其余顶点},若v与U中顶点u有边,则(u,v)为正常权值,若u不是v的出边邻接点,则(u, ...

  9. ElasticSearch教程——汇总篇

    环境搭建篇 ElasticSearch教程--安装 ElasticSearch教程--安装Head插件 ElasticSearch教程--安装IK分词器插件 ElasticSearch教程--安装Ki ...

最新文章

  1. ARM研发进展与企业清单
  2. 解决Oracle数据库不能导出空表的问题
  3. 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
  4. 201521123122 《java程序设计》第十三周学习总结
  5. VTK:PolyData之ColorCellsWithRGB
  6. shell脚本每日一练(三)
  7. java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...
  8. 如何对AWS RDS SQL Server数据库进行分类
  9. 拼多多回应“特斯拉拒绝交付Model 3”;阿里云称京西公司将改名;VS Code 1.48发布| 极客头条...
  10. html5+桌面推送,HTML5 Web Notifications 桌面推送小记
  11. 初识DOM(文档对象模型)
  12. ai-人工智能的本质和未来_带有人工智能的动画电子设备-带来难以想象的结果...
  13. c语言输出语句形式,c语言输出语句是什么
  14. 大数据常用的架构有哪些
  15. 宏病毒的研究与实例分析04——实战分析
  16. 计算机类专业都有什么区别?
  17. 计算机驱动程序的安装过程,u盘驱动程序安装,教您如何安装u盘驱动程序
  18. 想去微软工作吗?这些岗位年薪超过1100000元
  19. 06.破解Windows7密码
  20. MuJoCo - hybrid system的建模与控制

热门文章

  1. el-tree 动态图标
  2. 绿坝门,一个被曝光的黑幕
  3. 2008-05-12 日志:佛祖诞生,惊天动地
  4. 一键下载各大网站视频,包括b站(you-get)
  5. 基于FPGA状态机设计实现EtherCAT从站
  6. 高德地图api,1.4.15和2.0的点汇聚插件使用
  7. 【ARMNN/编译】tensorflow lite版本
  8. 我们是低估了百度地图,还是高估了高德?
  9. 重新定义双频路由器 华为路由WS5200获满分好评
  10. 热敏电阻温度检测-分段曲线拟合、Steinhart-Hart与查表