elasticsearch 如何将纳秒时间转换为Logstash中的日期类型?,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 如何将纳秒时间转换为Logstash中的日期类型?,elasticsearch,logstash,elasticsearch,Logstash" />

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

elasticsearch 如何将纳秒时间转换为Logstash中的日期类型?,elasticsearch,logstash,elasticsearch,Logstash,我正在通过Logstash 5.2将csv中的数据插入Elasticsearch 5.2。我的日期以纳秒为单位存储在csv中。Elasticsearch仅以毫秒为单位获取日期。当我尝试在纳秒内插入时,得到的日期是遥远的未来。如何将其转换为毫秒,然后插入 input { http { } } filter { csv { separator => "|" columns => ["logEntryTimeNano", "ip",

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

由于您的问题出现在nanotime后面的3位数字上,您只需编写一个ruby过滤器,以这种方式删除这些数字:

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

由于您的问题出现在nanotime后面的3位数字上,您只需编写一个ruby过滤器,以这种方式删除这些数字:

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

您可以使用mutate/gsub删除最后6个数字(考虑到您的数字由9个数字组成)


如果您使用Elasticsearch 7,您也可以查看,因为此版本已经支持纳秒。

您可以使用mutate/gsub删除最后6个数字(考虑到您的数字由9个数字组成)


如果您使用Elasticsearch 7,您也可以查看一下,因为这个版本已经支持纳秒。

ruby code中是否应该有方括号覆盖
logEntryTimeNano
?@khateeb只要是单个字段,如果您想访问嵌套字段,就可以不使用方括号(让我们fay foo.bar)您必须编写
[foo][bar]
(必填)。有关更多详细信息,请参见logstash事件api:ruby code中是否应该有包含
logEntryTimeNano
的方括号?@khateeb只要它是一个字段,就可以不使用方括号,如果要访问嵌套字段(让我们fay foo.bar),则必须编写
[foo][bar]
(必需)。有关更多详细信息,请参阅日志存储事件api: