概述

cardinality 度量是一个近似算法。 它是基于 HyperLogLog++ (HLL)算法的。 HLL 会先对我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。

优点:性能快,亿级别的记录在1秒内完成

缺点:存在只能保证最大40000条记录内的精确,超过的存在5%的误差,不适合需要精确去重场景

1、示例:

GET /myindex/mytype/_search
{"size" : 0,"aggs" : {"distinct_idCard" : {"cardinality" : {"field" : "idCard","precision_threshold" : 100 }}}
}

上面代码是ES 按照idCard去重,统计结果count(distinct),这个统计结果会随你的数据条数发生变化,会存在误差。

如果你统计的数据有100万条,idCard 唯一计数大于100,想对这100万条中的用户身份进行去重。上面的结果会存在5%的误差。

如果你的数据只有100条数据,idCard 唯一计数小于100,那么这个统计结果准确率100%。

那么唯一计数在多少以内,这个准确率几乎能达到100%呢?

precision_threshold:接受 0–40000 之间的数字,更大的值还是会被当作 40000 来处理。

precision_threshold值设置的越大,占用内存越大。

对于指定的阈值,HLL 的数据结构会大概使用 precision_threshold * 8 字节的内存,所以就必须在牺牲内存和获得额外的准确度间做平衡。

比如你查询的结果有10000条数据,里面唯一计数为9800,你设置的precision_threshold =10000,你需要牺牲掉

10000 * 8 = 80000/1000=80KB的内存来取保结果准确率。

Elasticsearch cardinality存在误差相关推荐

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

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

  2. 2000个软件开发领域的高频特殊词及精选例句

    1101.单词 uuids 的匹配文本: For example, when accessing /_uuids, you get a list of UUIDs from the system. G ...

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

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

  4. 转-聚合查询变慢-详解Elasticsearch的Global Ordinals与High Cardinality

    转自: https://blog.csdn.net/zwgdft/article/details/83215977 [README]  Elasticsearch中的概念很多,本文将从笔者在实践过程中 ...

  5. 聚合查询越来越慢?——详解Elasticsearch的Global Ordinals与High Cardinality

      Elasticsearch中的概念很多,本文将从笔者在实践过程中遇到的问题出发,逐步详细介绍 Global Ordinals 和 High Cardinality ,这也是笔者的认知过程.文中的E ...

  6. ElasticSearch搜索语法进阶学习(搜索+聚合,过滤+聚合)

    ElasticSearch聚合+搜索语法学习 目录 搜索+聚合:统计指定品牌下每个颜色的销量 global bucket:单个品牌与所有品牌销量对比 过滤+聚合:统计价格大于1200的电视平均价格 b ...

  7. SpringBoot 整合ElasticSearch全文检索

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的,并作为Apa ...

  8. SpringBoot整合Spring Data Elasticsearch

    特点: 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心) Restful风格,一切API都遵循Rest原则,容易上手 近实时搜索,数据更新在Elasticsear ...

  9. Elasticsearch学习--索引快速检索

    如何快速检索? Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤.特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询.倒排索引很 ...

最新文章

  1. python快速入门 pdf-Python快速入门PDF高清完整版本下载
  2. Python 字符串笔记(转自木木)
  3. Spring.Resource与Spring资源获取方式
  4. 活动最后72小时:购书优惠劵,折后再折,赶紧来抢啊
  5. LeetCode 327. 区间和的个数(multiset二分查找/归并排序)
  6. 8266不通过usb供电_HomePod mini?电源线同样不可拆卸:但或能用USB-C移动电源供电...
  7. P2839 畅通工程
  8. 导入jasperreports出现Cannot resolve com.lowagie:itext:2.1.7.js6异常、生成PDF中文不显示中文解决方法、使用命令安装jar包
  9. 基于国产处理器架构的高能物理数据处理系统
  10. Scrapy框架-阳光政务平台爬虫(二)
  11. 计算机平面设计要学语数英吗,《计算机平面设计与制作》课程标准规范.doc
  12. 问题在新浪:新浪微博注销后,为什么还保存着我的资料?
  13. 信息安全方面优秀论文
  14. 今天拿到小米正式Offer啦
  15. 数学建模神经网络模型,数学建模神经网络算法
  16. php获取视频信息,支持优酷土豆新浪腾讯等多家网站
  17. ps把白底图片改为透明
  18. PADS学习之路09-PADS LOGIC创建原理图工程文件
  19. linux双系统启动引导,linux windows 双系统并存与启动引导
  20. 微信浏览器 MP4播放失败,安卓下微信浏览器不能播放MP4问题的解决,gzip捣的鬼

热门文章

  1. 求∑_(k=1)^100▒k + ∑_(k=1)^50▒k^2 + ∑_(k=1)^10▒1/k
  2. mondrian mysql 实例,windows7环境下将Mondrian例子数据库导入到mysql中
  3. 对计算机的认识英语作文,介绍关于电脑的英语作文
  4. 全面解读亚马逊云科技 Private 5G 的革新理念
  5. 【安全知识分享】五星级酒店员工入职安全培训.ppt(附下载)
  6. $merge()合并两个数组方法
  7. 一起做一款自己的英语学习助手吧(小程序)
  8. 通辽市智慧城市视频信息共享平台入选内蒙古PPP推介项目库
  9. 2022年城市商品房销售价格趋势,房价是涨还是跌?
  10. 华为S5700EI固件升级