我在尝试将日期类型字段转换为mongoDB格式(ISODate)时遇到了一些麻烦。
我有一个带有JSON消息的RabbitMQ队列。这些消息有一个Date属性,如下所示:
Date : "2014-05-01T14:53:34.25677Z"
我的logstash服务读取RabbitMQ队列并将消息注入mongoDB。
这是我的logstash配置文件:
input {
rabbitmq {
...
codec => json
}
}
output {
mongodb {
codec => json
collection => "log"
isodate => true
database => "Test"
uri => "mongodb://localhost:27017"
}
}
我的问题是我的Date属性被改为字符串而不是Date。如何告诉Logstash将我的Date字段作为ISODate字段插入mongoDB?
谢谢
答案 0 :(得分:3)
在将字符串插入MongoDB之前,您应该使用logstash Date过滤器将字符串转换为Date:http://logstash.net/docs/1.4.2/filters/date
不知道你的完整架构,但它应该看起来像这样:
filter {
date {
match => [ "Date", "ISO8601" ]
}
}
请注意使用“ISO8601” - 看起来与您收到的格式相符,但您可能需要稍微玩一下。在测试时,我强烈建议在测试运行中使用stdout输出选项,以便在插入MongoDB之前轻松查看已完成的操作:
output {
stdout { codec => rubydebug }
}