我使用logstash将数据从mysql拉入elastic。配置类似于
input {
jdbc {
jdbc_driver_library => "/usr/share/mysql-connector-java-5.1.46-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://mysql:3306/books"
jdbc_user => "root"
jdbc_password=>"1"
schedule => "* * * * *"
statement => "SELECT * FROM book"
}
}
所以这个问题只是,
statement => "SELECT * FROM book"
这在大多数文献中都有体现。问题是,logstash会理解哪些内容发生了更改,哪些内容需要索引/重新索引,还是只是扫描整个表并重新索引所有内容?在我的例子中,表中的数据几乎是静态的,但是,一旦创建了记录,它应该立即(至少尽快)可用。因此,牵引间隔较低。我应该创建一个更复杂的查询来进行拉取,还是应该假设logstash会起作用?
1条答案
按热度按时间llew8vvj1#
使用您的配置日志存储将获取查询select*from book选择的所有记录。
如果要只读新记录,则必须在配置中设置一个增量列,该列将用作配置中的where:
设置tracking\u column将启用存储tracking\u column中指定的列的最后一个值的功能。last value:sql\u last\u value可以作为where中的自定义条件在查询中使用。logstash状态将存储在文件系统中,并且只存储与最后一个值相关的少量元数据。
请注意,这样您只能获取新插入的记录,但根据您的数据模型,它无法获取已导入数据的删除或更新。