【问题标题】:Elasticsearch - Concatenate documents by recalculating mean, min, and max valuesElasticsearch - 通过重新计算平均值、最小值和最大值来连接文档
【发布时间】:2017-01-16 01:08:58
【问题描述】:

我有一个每 2 秒报告一次延迟值的索引。这些文档包含时间戳、平均值、最小值和最大值。在任意时间段(比如一两天)之后,我想连接这些文档以减少空间需求,将延迟值的分辨率降低到每分钟一个。

有没有办法在 Elasticsearch 或插件中做到这一点?或者我是否必须编写一个脚本来清理前几天的索引并计算每分钟的新平均值、最小值、最大值 - 删除文档?

【问题讨论】:

  • ES 不会单独这样做。您滚动前一天的索引,进行计算并使用重新计算的数据重新创建一个新索引。
  • 干杯。您知道任何可能具有此功能的插件吗?如果没有,请随时将该评论作为此问题的答案,以便我接受。

标签: elasticsearch amazon-elasticsearch


【解决方案1】:

ES 不会单独做到这一点,我不知道有任何插件可以做到这一点。

一种方法是滚动前一天的索引,进行计算并使用重新计算的数据重新创建一个新索引。这可以使用任何客户端语言来完成...

...或使用 Logstash 使用 elasticsearch 输入读取前一天的索引,使用 aggregateruby 过滤器聚合数据并进行计算,使用 elasticsearch 输出写入新索引.

【讨论】:

  • 不错的建议。非常感谢。
【解决方案2】:

对于任何给定的 kibana4 表格可视化,我们正在使用时间序列数据做类似的事情。

我们有一个 PHP 代码,它采用给定的 Kibana 可视化 id,提取其聚合,为该聚合准备时间直方图的弹性搜索聚合查询,桶大小为您想要的分辨率(1d、1w、1M)。

然后我们将该聚合的结果存储在单独的索引中。

这种方法的最大问题是您无法再在 Kibana 4 中显示聚合结果,因为结果已经聚合,因此为了在图表上显示这些分辨率,我们需要使用其他东西。

如果有一个 Kibana 插件可以做到这一点并显示预聚合数据的图表,就像在 Excel 或其他东西中显示它们的方式一样,那就太棒了。

【讨论】:

  • 我也最终在 Python 中做了类似的事情。除了我从聚合中提取结果并制作与旧结构相同的文档之外。所以我可以在 Kibana 中与原始文件一起进行绘图。显然速度较慢,但​​您通过批量提交文件节省了大量时间。
猜你喜欢
  • 2016-11-04
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
相关资源
最近更新 更多