如何在Logstash中将纳秒时间转换为日期类型?

时间:2017-03-20 10:27:55

标签: elasticsearch logstash

我通过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"
    }
}

2 个答案:

答案 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,因为该版本已经支持纳秒级。