ES聚合学习笔记之--HyperLogLog与BloomFilter
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,ES的聚合是其一大特色。然而出于性能的考虑, ES的聚合是以分片Shard为单位,而非Index为单位, 所以有些聚合的准确性是需要注意的。 比如: TermAggregations.es的基数聚合使
千家信息网最后更新 2026年11月01日ES聚合学习笔记之--HyperLogLog与BloomFilter
ES的聚合是其一大特色。然而出于性能的考虑, ES的聚合是以分片Shard为单位,而非Index为单位, 所以
有些聚合的准确性是需要注意的。 比如: TermAggregations.
es的基数聚合使用到了hyperloglog算法。 出于好奇,了解了一下。
在海量数据场景下, 我们通常会遇到这样的两个问题:
数据排重。比如在推送消息场景,消息重复对用户是打扰, 用户发券场景, 重复发券就是损失了。
- pv/uv统计。这类场景下, 对精确度要求没必要锱铢必较。
如何高效解决这两类问题呢?
对于数据排重, 我们可以使用布隆过滤器。java 样列代码如下:
BloomFilter bloomFilter = BloomFilter.create(new Funnel() { private static final long serialVersionUID = 1L; @Override public void funnel(String arg0, PrimitiveSink arg1) { arg1.putString(arg0, Charsets.UTF_8); } }, 1024*1024*32); bloomFilter.put("asdf"); bloomFilter.mightContain("asdf"); 对于计数, 我们可以使用HyperLogLog算法,ES中已经有相关的实现。
其实封装一下,布隆过滤器也是能直接实现HyperLogLog算法的功能的。
这里遗留几个问题,思考清楚后补充:
- BloomFilter跟HyperLogLog算法的原理
- 相同量级数据下的效率及内存消耗
- 各自的适用场景有哪些
场景
数据
算法
单位
消息
用户
过滤器
问题
布隆
清楚
相同
精确
好奇
必要
锱铢必较
两个
代码
内存
准确性
几个问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新华互联网科技
朗新科技与工业互联网
美国互联网科技
致骋互联网科技
互联网科技视频
鑫亿盛互联网科技
互联网科技上市公司
顺玮阁互联网科技
大白互联网科技
互联网校园科技培训
互联网科技与管理
互联网行业科技股
朱啸虎曾投资哪些互联网科技企业
互联网企业科技类企业如何做账
江苏苏星互联网科技有限公司
互联网科技包装股份有限公司上市
广州梦谷互联网科技有限公司领导
容联科技互联网电商
科技互联网公司两年变化
互联网大会出现的黑科技
互联网科技社
壹账通互联网科技
互联网科技类展会
盛创互联网科技有限公司
滨湖区互联网智能科技产品供应
群盈汇互联网科技有限公司
2021互联网科技公司排名
上海钢联属于互联网科技股吗
浙南科技城互联网大厦招聘
工业互联网科技成果转化