是否可以将ElasticSearch聚合的结果放回索引中?

时间:2014-07-17 21:21:25

标签: elasticsearch elasticsearch-aggregation

所以我有一个从主机A到主机B的ping数据索引,我的数据如下所示:

{
  "@version" => "1",
  "@timestamp" => "2014-07-17T21:17:34.030Z",
  "host" => "host_a",
  "to_host" => "host_b",
  "value" => "25.6",
  "from_host" => "host_a",
  "stat_type" => "ping"
}

目标是还在移动窗口上存储ping值(上面的“值”)的第90百分位数据,例如最后一小时,最后一天等。

我知道我可以通过汇总来做到这一点,但我的问题如下:

ElasticSearch是否支持自动将聚合(或查询)的输出添加回索引的方法?

我知道我可能只需要输出,调整字段,然后使用一些帮助应用程序将数据重新放入,但很奇怪是否只能使用ES。

要使用等效的SQL示例,我会寻找类似的东西:

create table agg
select id, count(*) as counts
from data
group by id;

1 个答案:

答案 0 :(得分:1)

也许有点偏离您正在寻找的内容,但您可以使用Logstash执行此操作,Logstash是Elasticsearch http://www.elasticsearch.com/blog/welcome-jordan-logstash/的一部分。

我不会在这里详细介绍(有很多Logstash教程),但是将聚合查询的结果附加到日志文件中并让logstash自动获取结果并将其加载到Elasticsearch索引中不重要的。本教程涵盖了从日志文件中读取logstash并自动索引内容所需的全部内容:

http://logstash.net/docs/1.4.2/tutorials/getting-started-with-logstash

你当然可以在代码中执行此操作,但是大部分工作都在这里完成,一旦你有logstash设置,你需要做的就是将你的结果追加到日志文件中。