Elasticsearch月度滚动指数

时间:2015-06-24 01:26:38

标签: elasticsearch logstash

我一直在使用logstash来提供elasticsearch中的每日滚动索引,就像这样

   output {

        elasticsearch {

                ....
                index: myindex-%{+YYYY.MM.DD}
       }
   }

现在看来我需要使用每月滚动指数,看看http://logstash.net/docs/1.4.1/outputs/elasticsearch.html#index

但是我仍然感到困惑,答案就像使用myindex-%{+YYYY.MM}一样简单,索引将在每个月末滚动?

更新: 以下是“相同”事件(具有相同_id字段)的示例在两个不同日期被编入索引

在第A天,这是索引

   {_id: 123, message: "old message}

在第二天B,这是索引

   {_id: 123, message: "updated message} 

所以如果第A天和第B天属于两个单独的索引,如果我的查询回顾所有这些索引,我将有2个事件。为了消除重复,在索引事件B时,我将使用_id进行额外的检查并删除先前存在的事件A然后对B进行索引。如果是每日索引,那么随着时间的推移,我担心我的查询在_id搜索会更昂贵,每月可以改善。最后但并非最不重要的是,如果从我的支票中找到的事件存在于当前索引(今天到本月),它将不会删除该事件,而是让elasticsearch根据update执行_id(基本上)它也是一个删除/创建,只是我不需要在我的代码中执行此操作)

由于

1 个答案:

答案 0 :(得分:5)

您提供的配置会发生事件的时间戳。如果您没有执行其他配置,则会记录日志存储收到事件的时间。但是,获取事件本身内的时间戳通常很有用。比使用这个时间戳。下面是我经常使用的一些示例代码。

filter {
  date {
      match => ["timestamp" , "dd/MMM/yyyy:HH:mm:ss Z"]
  }
}
output {
  elasticsearch {
    protocal => "transport"
    host => "localhost:9300"
    cluster => "mycluster"
    index => "gridshore-logs-%{+YYYY.MM}"
  }
}