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

最佳答案

由于问题出在纳米时间的后3位数字上,因此您可以编写一个ruby过滤器,以这种方式删除这些数字:

filter {
    csv{
        separator => ","
        columns => ["logEntryTimeNano", "ip", "country", "state", "city"]
    } ruby {
        code => "event.set('[logEntryTimeNano]', event.get('logEntryTimeNano')[0..-4])"
    }
}

关于elasticsearch - 如何在Logstash中将以纳秒为单位的时间转换为日期类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42901198/

10-11 20:47