在这里使用新的logstash jdbc连接器:
https://www.elastic.co/guide/zh-CN/logstash/current/plugins-inputs- jdbc.html 后续logstash运行如何影响已经编入ElasticSearch的内容?是在ES索引中创建新文档,还是更新与已经被索引的行匹配的文档?我尝试解决的用例是将带有时间戳的行索引到elasticsearch中,但是该表不断更新,我只想索引新数据,或者如果我不得不再次读取该表,则只为新表添加新文档行。
有什么建议?还是有关logstash jdbc插件的更多文档?
我要做的是在查询语句中包含插件上次运行的时间戳(即sql_last_start),因此它将仅加载新更新的记录。
sql_last_start
例如,您的jdbc输入插件如下所示:
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名称和表的真实名称进行更改。
timestamp
mytable