我仍然需要弄清楚如何根据文档字段告诉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 => "..."
}
}
可悲的是,它不起作用。任何想法,如何实现?
非常感谢!
答案 0 :(得分:0)
“%{+ YYYYMM}”表示使用@timestamp中的日期值。如果您想要在%{time}中以YYYYMM命名的索引,则需要在该日期字段之外创建一个字符串,然后在输出节中引用该字符串。可能有一个mutate {}可以做到,或者放入ruby {}。
在大多数安装中,您希望将@timestamp设置为事件的值。 logstash自身时间的默认值不是很有用(想象一下,如果您的事件在处理期间延迟了一个小时)。如果你这样做,那么%{+ YYYYMM}“就可以了。
答案 1 :(得分:0)
这是因为索引名称是默认情况下基于UTC时间创建的。