ES的聚合是其一大特色。然而出于性能的考虑, ES的聚合是以分片Shard为单位,而非Index为单位, 所以
有些聚合的准确性是需要注意的。 比如: TermAggregations.
成都创新互联专业为企业提供荣昌网站建设、荣昌做网站、荣昌网站设计、荣昌网站制作等企业网站建设、网页设计与制作、荣昌企业网站模板建站服务,十年荣昌做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
es的基数聚合使用到了hyperloglog算法。 出于好奇,了解了一下。
在海量数据场景下, 我们通常会遇到这样的两个问题:
数据排重。比如在推送消息场景,消息重复对用户是打扰, 用户发券场景, 重复发券就是损失了。
如何高效解决这两类问题呢?
对于数据排重, 我们可以使用布隆过滤器。java 样列代码如下:
BloomFilter<String> bloomFilter = BloomFilter.create(new Funnel<String>() {
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算法的功能的。
这里遗留几个问题,思考清楚后补充:
标题名称:ES聚合学习笔记之--HyperLogLog与BloomFilter
网站链接:https://www.cdcxhl.com/article10/gjoido.html
成都网站建设公司_创新互联,为您提供手机网站建设、面包屑导航、外贸建站、响应式网站、自适应网站、关键词优化
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联