一尘不染

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

elasticsearch

在这里使用新的logstash jdbc连接器:

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

有什么建议?还是有关logstash jdbc插件的更多文档?


阅读 307

收藏
2020-06-22

共1个答案

一尘不染

我要做的是在查询语句中包含插件上次运行的时间戳(即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名称和表的真实名称进行更改。

2020-06-22