logstash jdbc连接器基于时间的数据

时间:2015-08-13 18:19:15

标签: jdbc elasticsearch logstash

使用新的logstash jdbc连接器:

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html 后续的logstash如何运行会影响已经索引到ElasticSearch的内容?它是在ES索引中创建新文档,还是更新与已经是索引的行匹配的文档?我试图解决的用例是将带有时间戳的行索引到弹性搜索中,但是表不断更新我想只索引新数据,或者如果我必须再次读取表,则只为新的添加新文档行。

有什么建议吗?或者更多关于logstash jdbc插件的文档?

1 个答案:

答案 0 :(得分:5)

我要做的是在查询语句中包含上次运行插件的时间戳(即sql_last_start),因此它只会加载新更新的记录。

例如,您的jdbc输入插件将如下所示:

input {
  jdbc {
    jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
    jdbc_user => "mysql"
    schedule => "* * * * *"
    statement => "SELECT * FROM mytable WHERE timestamp > :sql_last_start"
  }
}

请务必使用包含上次更新日期的字段名称更改timestamp,并使用表格的真实姓名更改mytable