在logstash

时间:2018-01-12 09:46:34

标签: java mysql elasticsearch jdbc logstash

我有一列create_time,其值为'2018-01-12 16:27:59'; 当我在jdbc input plugin中使用logstash将数据同步到Elastic Search时。时间已经变为'2018-01-12T08:27:59.000Z'。我知道es的时区是UTC,这与我的时区不同。我该如何修复数据? 这是我的配置文件:

 input {
    jdbc {
      jdbc_connection_string => 'jdbc:mysql://*:3306/*?'
      jdbc_user => '*'
      jdbc_password => '*'
      jdbc_driver_library => 'mysql-connector-java-5.1.45-bin.jar'
      jdbc_driver_class => 'com.mysql.jdbc.Driver'
      statement => 'select * from test where create_time > :sql_last_value'
      use_column_value => true
      tracking_column => "create_time"
      tracking_column_type => "timestamp"
      jdbc_default_timezone => "Asia/Shanghai"
      jdbc_fetch_size => "1000"
      schedule => '* * * * *'
    }
}
output {
    stdout {
        codec => json_lines
    }

    elasticsearch {
        hosts => 'localhost:9200'
        index => 'test-1 '
        document_id => "%{id}"
    }


}

1 个答案:

答案 0 :(得分:0)

您可以在映射中设置所需的日期格式:

{
  "mappings": {
    "my_type": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd"
        }
      }
    }
  }
}

参考Elastic Date Formats

您还可以在将日期发送到logstash之前更改select语句并根据需要设置日期格式。