ElasticSearch聚合FIRST / Max嵌套文档

时间:2015-02-02 16:57:12

标签: elasticsearch

我正在使用弹性搜索尝试获取"最后一次登录国家"对于一组用户,我不确定ES是否支持这种类型的聚合?这是映射的粗略图片:


User
   UserId
   Sessions (array)
     Session1 - CreateDate, Country
     Session2 - CreateDate, Country

我想要做的是传递日期范围,并按国家/地区获取登录输出,每个用户只能进行一次会话。换句话说,如果用户在日期范围内登录了3次,那么这些会话中只有1次会计入整体计数。

输出结果如下所示:


Country Aggregations
   USA, Count: 10
   Japan, Count: 15
   Spain, Count: 23

我一直在查看嵌套聚合,但我不确定他们能否给我我需要的东西。我遇到的主要问题是,如果用户在日期范围内有多个会话,则每个会话都会影响整个国家/地区的数量。有没有办法过滤掉这个嵌套文档的内部列表,这样只有1个会对每个用户的聚合做出贡献?

1 个答案:

答案 0 :(得分:1)

我在ElasticSearch的github论坛上发布了这个问题,显然这个功能在当前的ES版本(1.4.2)中不可用:

https://github.com/elasticsearch/elasticsearch/issues/9536