看,灰机...

[求助] 一个聚合统计(如果当天有多条,统计时只计入最后插入的那条)

Elasticsearch | 作者 copyes | 发布于2018年06月26日 | 阅读数:2280

有索引包含记录的格式如下
索引名:event
uid 数值格式
level 数值格式
date 日期格式(2018-06-26 14:00:00)

需要统计一天内level=1的有多少条,level=2的有多少条,level=n的多少条
要求统计的时候,如果有两条或两条以上记录包含相同的UID,则只计入最后插入的那条进入统计结果。

例子,假如有如下数据
uid=1 level=1 date=2018-06-25 14:00:00
uid=1 level=2 date=2018-06-25 16:00:00

我们统计
level=1的条数应该为0
level=2的条数应该为1
 
求DSL
已邀请:

yayg2008

赞同来自:

最简单的实现方式是,写入数据的时候维护一个uid,maxLevel 记录,对这个记录进行聚合就比较容易了。

KKKKKWH - 你说对了

赞同来自:

请问 你解决了吗?

rochy - rochy_he

赞同来自:

使用多层聚合即可
第一层对 level 进行 terms 聚合
然后建立其子聚合,子聚合对 uid 进行 terms 聚合
即可得到数目

要回复问题请先登录注册