logstash的弹性搜索索引日期来自哪里?

时间:2014-07-02 16:59:01

标签: elasticsearch logstash

来自the docs

Default value is "logstash-%{+YYYY.MM.dd}"

我想知道logstash在哪里获取YYYY.MM.dd的信息?是@timestamp字段吗?如果是这样,可以告诉它使用不同的字段(例如@mydate)吗?

1 个答案:

答案 0 :(得分:3)

索引YYYY.MM.dd是根据@timestamp时间。

您可以参考elasticsearch.rb关于'event.sprintf'来打印logstash索引。

index = event.sprintf(@index)

然后你可以研究event.rb来看看sprintf做了什么。

t = @data["@timestamp"]
    formatter = org.joda.time.format.DateTimeFormat.forPattern(key[1 .. -1])\
      .withZone(org.joda.time.DateTimeZone::UTC)
    #next org.joda.time.Instant.new(t.tv_sec * 1000 + t.tv_usec / 1000).toDateTime.toString(formatter)
    # Invoke a specific Instant constructor to avoid this warning in JRuby
    #  > ambiguous Java methods found, using org.joda.time.Instant(long)
    org.joda.time.Instant.java_class.constructor(Java::long).new_instance(
      t.tv_sec * 1000 + t.tv_usec / 1000
    ).to_java.toDateTime.toString(formatter)

因此,如果您希望索引遵循您自己的字段,则必须修改event.rb以使用您自己的字段而不是时间戳。或者,您可以将时间戳值更改为您自己的字段时间。