首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Elasticsearch中,如何获得特定用户文档的平均时间差?

在Elasticsearch中,如何获得特定用户文档的平均时间差?
EN

Stack Overflow用户
提问于 2018-11-26 23:46:44
回答 1查看 97关注 0票数 0

假设一个单独的Elasticsearch文档可能如下所示:

代码语言:javascript
复制
{
    "created": "2018-11-26T22:20:01+00:00",
    "user_id": 2,
    "text": "Test!"
    "verb": "comment_posted",
    "thread_id": 1
}

我想把动词过滤为"comment_posted",然后为每个用户获取特定帖子(创建字段)的评论之间的平均时间。

下面是一个示例数据集和预期结果:

  • 用户'A‘在线程'1’上发布文章(启动线程)在1:30
  • 用户'B‘在线程'2’上发布文章(启动线程)在1:45
  • 用户'A‘在2:00在线程'2’上发布
  • 用户'B‘在线程'1’上发布在3:30
  • 用户'B‘在4:30在线程'1’上发布
  • 用户'A‘在线程'1’上的帖子在5:15

用户A的平均时间为30分钟(2:00 - 1:45和5:15 - 4:30),用户B的平均时间为120分钟(3:30 - 1:30和4:30 - 3:30)。

我的查询是什么样子的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-27 10:52:37

短答案

有可能做到这一点,但不建议这样做。

长答案

通常,要执行这样的操作,您需要使用聚合

唯一允许计算增量的聚合是串行差分聚合。但是,它用于直方图或日期直方图聚合的上下文中。

在您的示例中,要获得每个直方图桶的单个注释,您可以创建一个带有非常小的桶的直方图(例如,一秒钟的细分),然后使用串行差分来获取时间差值。然而,正如这个答案在ElasticSearch论坛上提到的那样,就性能而言,这将是糟糕的。

因此,这里的答案是,您需要在索引时间计算这些三角洲,或者使用来自另一个存储区的数据(例如,在Postgres中计算非常容易)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53490767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档