elasticsearch es如何统计用户文档数量范围内容聚合?
匿名 | 发布于2022年05月28日 | 阅读数:2998
有个用户任务完成数据,格式如下:
id uid score time
11 2 1 2022-05-17 18:18:16
12 3 6 2022-05-17 17:17:15
13 2 7 2022-05-17 16:16:13
10 2 9 2022-05-16 10:15:12
17 6 10 2022-05-15 09:14:11
16 4 2 2022-05-15 05:12:11
15 3 3 2022-05-15 06:10:11
.......
需求 :统计完成次数 2-3次 这个范围的用户人数(1000万左右),分数总和,每天完成任务次数走势图。
满足这个条件 只有uid 2 和 uid3 ,一共2人(可近似值),这2人分数合计26分,按天走势 [2022-05-15,1],[2022-05-16,1],[2022-05-17,3]
id uid score time
11 2 1 2022-05-17 18:18:16
12 3 6 2022-05-17 17:17:15
13 2 7 2022-05-17 16:16:13
10 2 9 2022-05-16 10:15:12
17 6 10 2022-05-15 09:14:11
16 4 2 2022-05-15 05:12:11
15 3 3 2022-05-15 06:10:11
.......
需求 :统计完成次数 2-3次 这个范围的用户人数(1000万左右),分数总和,每天完成任务次数走势图。
满足这个条件 只有uid 2 和 uid3 ,一共2人(可近似值),这2人分数合计26分,按天走势 [2022-05-15,1],[2022-05-16,1],[2022-05-17,3]
3 个回复
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
FFFrp
赞同来自:
Charele - Cisco4321
赞同来自:
先查出 count(uid) as uidCnt, sum(score) as scoreSum group by uid(这个应该简单)
然后结果直接插入另外一个新索引,文档_id就是uid,相同_id会覆盖.
(也可只插入部分结果,比如uidCnt在2,3之间的。看需求)。
有了这个新索引,实现你的查询要求就很简单了。