我一直在使用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
(基本上)它也是一个删除/创建,只是我不需要在我的代码中执行此操作)
由于
答案 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}"
}
}