ES聚合学习笔记之--HyperLogLog与BloomFilter
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,ES的聚合是其一大特色。然而出于性能的考虑, ES的聚合是以分片Shard为单位,而非Index为单位, 所以有些聚合的准确性是需要注意的。 比如: TermAggregations.es的基数聚合使
千家信息网最后更新 2025年01月30日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安全错误
数据库的锁怎样保障安全
虚拟管理器服务器运行失败
家庭私有云服务器收费软件
网络安全活动 过程
淘小二广州网络技术
国企的派遣工软件开发岗位
学校内网是如何连接数据库的
网络安全产品经理出路
川大网络技术
数据库改密码命令
开方舟生存进化服务器需要哪些
网络道德与网络安全说课稿
彩票软件开发一个多少钱
大学生网络安全学习教育
数据库技术的主要目的有哪些
龙之召唤服务器英文
itrim数据库
服务器租用后怎么上传网站
仓库数据库管理系统制作
2021年国内政府网络安全事件
美国宫颈癌数据库
无线传感器网络技术习题
天津信息化少儿编程软件开发
mc服务器tps多少正常
最早的网络安全时间
新疆网络安全倡议书
台湾超市电商软件开发价格
河北君坤互联网科技有限公司
微软服务器尚未启动是什么意思
服务器机房管理规范
辽交计算机网络技术在什么地方