0

我在尝试将日期类型字段转换为 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"
    }
}

我的问题是我的日期属性被插入为字符串而不是日期。如何告诉 Logstash 将我的 Date 字段作为 ISODate 字段插入 mongoDB?

谢谢

4

1 回答 1

3

在将字符串插入 MongoDB 之前,您应该使用 logstash 日期过滤器将字符串转换为日期:http: //logstash.net/docs/1.4.2/filters/date

不知道您的完整架构,但它应该看起来像这样:

filter {   
  date {
    match => [ "Date", "ISO8601" ]   
    } 
}

请注意“ISO8601”的使用 - 它似乎与您收到的格式相匹配,但您可能需要稍微尝试一下。当您对此进行测试时,我强烈建议您使用 stdout 输出选项进行测试运行,以便在插入 MongoDB 之前轻松查看已完成的工作:

output {
  stdout { codec => rubydebug }
}
于 2014-07-22T00:45:47.907 回答