ES聚合学习笔记之--HyperLogLog与BloomFilter
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,ES的聚合是其一大特色。然而出于性能的考虑, ES的聚合是以分片Shard为单位,而非Index为单位, 所以有些聚合的准确性是需要注意的。 比如: TermAggregations.es的基数聚合使
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
软件开发团队的主要成员
青浦区海航软件开发口碑推荐
天津旧服务器回收价格表
360安全卫士服务器网页打开卡
惠民软件开发自学网在线学习
邮政网络安全事件
居家养老软件开发公司
数据库分区自增
数据库管理软件中文
电脑教室服务器无法连接学生端
福建师范大学数据库期末考试
南宁网络技术推广
计算机网络技术视频教学
网络安全守护有我视频宣传
软件开发保险业务
海口软件开发工作
长沙中兴软件开发
网络安全手语
服务器在国外被限流怎么办
海岩小说软件开发
数据库补丁sp4
数据库报表求人数
服务器会议
天津车辆数据库
分类 数据库设计
软件开发和系统研发的区别
navicat更新数据到数据库
我不是黑客我是一名网络安全人员
黑莓软件开发博客
服务器百万兆网卡