我通过Logstash 5.2将数据从csv插入Elasticsearch 5.2。我的日期存储为csv中以纳秒为单位的数字。 Elasticsearch仅以毫秒为单位。当我尝试以纳秒为单位插入时,生成的日期是从远到未来。如何将其转换为毫秒然后插入?
input {
http {
}
}
filter {
csv {
separator => "|"
columns => ["logEntryTimeNano", "ip", "country", "state", "city"]
}
}
output {
elasticsearch {
hosts => ["127.0.0.1"]
index => "log"
}
}
答案 0 :(得分:0)
由于你的问题出现在纳米时的尾随3位数,你可以简单地写一个红宝石过滤器来删除这些数字:
filter {
csv{
separator => ","
columns => ["logEntryTimeNano", "ip", "country", "state", "city"]
} ruby {
code => "event.set('[logEntryTimeNano]', event.get('logEntryTimeNano')[0..-4])"
}
}
答案 1 :(得分:0)
您可以使用mutate / gsub删除最后6个数字(考虑到您的数字由9个数字组成)。
mutate {
gsub => ["logEntryTimeNano", "\d{6}$", ""]
}
如果您使用的是Elasticsearch 7,也可以查看date_nanos,因为该版本已经支持纳秒级。