居然是你

聚合问题-求活跃用户

Elasticsearch | 作者 yjnnyqqq | 发布于2019年11月07日 | 阅读数:117

条件:索引里包含用户ID,用户登录时间。
求:获取连续3天登录的用户数量,一定是连续3天
假设表数据如下:
uid login_time
1 2015-6-1 8:20:00
1 2015-6-2 7:20:05
1 2015-6-3 21:20:30
2 2015-6-1 8:10:00
2 2015-6-3 8:20:00
2 2015-6-4 18:20:00
1 2015-6-5 9:20:00
1 2015-6-6 16:20:00
3 2015-6-1 8:20:00
1 2015-6-7 12:20:00
1 2015-6-8 23:20:00
3 2015-6-2 8:20:00
3 2015-6-3 2:20:00

期望结果:
uid 连续活跃天数
1 4 展示出来
2 2
3 3 展示出来

求dsl语句(或思路)。谢谢!
已邀请:
匿名用户

匿名用户

赞同来自: lu_xiao_xi

ES 是全文检索引擎,不是聚合引擎,不是流式计算引擎,没有相应的函数,实现如此复杂的逻辑。
 
况且活跃数的计算,可以采用redis的 bitmap实现,单纯说活跃数是很模糊的,抽象的,
 
一般都是一段时间范围内,比如5分钟活跃数,30分钟活跃数,1小时活跃数,
 
登录次数,登出次数,最大在线时长,连续登录次数,连续一个月登录的所有用户,连续一年登录的所有用户,
 
这种类似的需求那太多了,即使ES勉强能实现一个业务,那以后更多的业务怎么办呢?
 
如果能改成流式计算更好了。

要回复问题请先登录注册