【发布时间】:2015-09-10 00:55:23
【问题描述】:
我一直在使用 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 基于_id 执行update(本质上它是一个删除/创建也一样,只是我不需要在我的代码中这样做)
谢谢
【问题讨论】:
-
是的,就是这么简单。
-
感谢 Jettro,我能够在索引 2 个事件之间更改系统日期时间进行测试,并且可以看到正在创建的 2 个索引。
-
我很好奇……为什么“需要”使用月度索引?
-
@AlainCollins 长强短,每天都有具有相同_id 和其他更新属性的事件,如果是每日滚动索引,与使用月度索引相比,我需要更频繁的唯一性检查 - 我仍然需要检查,但只能查询不是当前月份的索引
-
@JamesJiang 不确定你的意思是不是对你不起作用。如果这就是您的意思,您可以发布进入日志存储和配置的消息。可能是时间戳不符合您的预期,或者可能是另一个问题。我无法在评论中发布代码,所以我将其发布在答案中。