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