【问题标题】:logstash jdbc connector time based datalogstash jdbc 连接器基于时间的数据
【发布时间】:2015-11-06 20:36:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: jdbc elasticsearch logstash


    【解决方案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 更改为表的真实名称。

    【讨论】:

    • 另一个提示:如果您的数据随时间变化并且您想更新弹性中的相应条目,您可以在输出中设置弹性document_idoutput {elastic {document_id = "your_primary_key"}}
    猜你喜欢
    • 2020-05-28
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多