【发布时间】:2016-02-14 14:51:23
【问题描述】:
我们在 ES 中存储小文档,代表对象的一系列事件。每个事件都有一个日期/时间戳。我们需要分析一段时间内所有对象的事件之间的时间。
例如,想象一下这些事件 json 文档:
{ "object":"one", "event":"start", "datetime":"2016-02-09 11:23:01" }
{ "object":"one", "event":"stop", "datetime":"2016-02-09 11:25:01" }
{ "object":"two", "event":"start", "datetime":"2016-01-02 11:23:01" }
{ "object":"two", "event":"stop", "datetime":"2016-01-02 11:24:01" }
我们希望从中得到一个直方图,绘制两个生成的时间戳增量(从开始到停止):对象一为 2 分钟/120 秒,对象二为 1 分钟/60 秒。
最终我们想要监控开始和停止事件之间的时间,但它要求我们计算这些事件之间的时间,然后聚合它们或将它们提供给 Kibana UI 以进行聚合/绘制。理想情况下,我们希望将结果直接提供给 Kibana,这样我们就可以避免创建任何自定义 UI。
提前感谢您的任何想法或建议。
【问题讨论】:
-
我有几个问题。 EventA 和 EventB 属于不同的文件?查询中标识的每个对象是什么意思?您能否具体说明您想要实现的目标?
-
好的,我将问题更新为更具体一点。如果这能更好地解释我的问题,请告诉我。
-
我认为您当前的文档结构不可能。您可以将文档更改为具有以下字段“对象”、“事件开始时间”、“事件停止时间”
-
没有。活动什么时候开始,我们不知道什么时候结束。同样,当事件结束时,我们没有工具来检索开始文档。
-
我们相信使用搜索聚合是可能的:elastic.co/guide/en/elasticsearch/reference/current/… 我们只是不知道如何利用它们来配置它们来完成我们需要的工作。
标签: elasticsearch aggregation kibana