我有一个索引,它每 2 秒报告一次延迟值。这些文档包含时间戳、平均值、最小值和最大值。在任意时间段(比如一两天)之后,我想连接这些文档以减少空间需求,将延迟值的分辨率降低到每分钟一个。
有没有办法在 Elasticsearch 或插件中做到这一点?或者我是否必须编写一个脚本来清除前几天的索引并计算每分钟的新平均值、最小值、最大值 - 删除文档?
我有一个索引,它每 2 秒报告一次延迟值。这些文档包含时间戳、平均值、最小值和最大值。在任意时间段(比如一两天)之后,我想连接这些文档以减少空间需求,将延迟值的分辨率降低到每分钟一个。
有没有办法在 Elasticsearch 或插件中做到这一点?或者我是否必须编写一个脚本来清除前几天的索引并计算每分钟的新平均值、最小值、最大值 - 删除文档?
ES 不会单独做到这一点,我不知道有任何插件可以做到这一点。
一种方法是滚动前一天的索引,进行计算并使用重新计算的数据重新创建一个新索引。这可以用任何客户端语言来完成......
...或者使用 Logstash 使用elasticsearch
输入来读取前一天的索引,使用aggregate
orruby
过滤器来聚合数据并进行计算并使用elasticsearch
输出来写入新索引。
对于任何给定的 kibana4 表格可视化,我们正在使用时间序列数据做类似的事情。
我们有一个 PHP 代码,它采用给定的 Kibana 可视化 id,提取其聚合,为该聚合的时间直方图准备弹性搜索聚合查询,桶大小为您想要的分辨率(1d、1w、1M)。
然后我们将该聚合的结果存储在单独的索引中。
这种方法的最大问题是您不能再在 Kibana 4 中显示聚合结果,因为结果已经聚合,因此为了在图表上显示这些分辨率,我们需要使用其他东西。
如果有一个 Kibana 插件可以做到这一点并显示预聚合数据的图表,就像您在 Excel 或其他东西中显示它们的方式一样,那就太棒了。