来自文档字段的Logstash动态索引失败

时间:2016-01-21 21:41:37

标签: elasticsearch logstash logstash-configuration

我仍然需要弄清楚如何根据文档字段告诉Logstash发送动态索引。此外,必须对此字段进行转换才能获得真实的字段。索引在最后。 鉴于,有一个领域"时间" (这是一个UNIX时间戳)。这个字段已经转换为" date"过滤到弹性的DateTime对象。 此外,它应该作为索引(YYYYMM)服务器。索引不应该从未触及的@Timestamp派生。

实施例: {...,"时间":1453412341,...}

请转到索引:201601

我使用以下配置:

filter {
  date {
    match => [ "time", "UNIX" ]
    target => "time"
    timezone => "Europe/Berlin"
  }
}
output {
    elasticsearch {
        index => "%{time}%{+YYYYMM}"
        document_type => "..."
        document_id => "%{ID}"
        hosts => "..."
    }
}
可悲的是,它不起作用。任何想法,如何实现?

非常感谢!

2 个答案:

答案 0 :(得分:0)

“%{+ YYYYMM}”表示使用@timestamp中的日期值。如果您想要在%{time}中以YYYYMM命名的索引,则需要在该日期字段之外创建一个字符串,然后在输出节中引用该字符串。可能有一个mutate {}可以做到,或者放入ruby {}。

在大多数安装中,您希望将@timestamp设置为事件的值。 logstash自身时间的默认值不是很有用(想象一下,如果您的事件在处理期间延迟了一个小时)。如果你这样做,那么%{+ YYYYMM}“就可以了。

答案 1 :(得分:0)

这是因为索引名称是默认情况下基于UTC时间创建的。