1
我想索引数据从mysql数据库到elasticsearch使用logstash。 Logstash运行时没有错误,但问题是,它仅从我的SELECT查询中索引一行。 下面是我使用的软件版本:Logstash只索引从MySQL的选择查询的一行到弹性搜索
- 弹性搜索:2.4.1
- logstash:5.1.1
- 的mysql:5.7.17
- jdbc_driver_library:使用mysql-connector-Java的5.1.40 bin.jar
我不知道这是因为logstash和elasticsearch版本不同。
下面是我的管道配置:
input {
jdbc {
jdbc_driver_library => "mysql-connector-java-5.1.40-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "user"
jdbc_password => "password"
schedule => "* * * * *"
statement => "SELECT * FROM employee"
use_column_value => true
tracking_column => "id"
}
}
output {
elasticsearch {
index => "logstash"
document_type => "sometype"
document_id => "%{uid}"
hosts => ["localhost:9200"]
}
}
非常感谢回复。我不清楚几件事情。每次调度程序运行时,它都会在ES中选择所有行和重新索引(我知道它不会重复,因为我们有tracking_column)?例如,我最初在表中有10行,并且它们在ES中被编入索引。在下一次调度程序运行之前,会添加5个行。现在,调度程序会选择15行还是5行?我的理解是,如果:在选择查询中使用sql_last _value,那么5将选择,否则将选择15。请澄清我的理解。 –
@MaruthiPodila是的没错。如果您的sql_last_value指向最后一次更新的ID,它将始终选择调度程序再次运行时添加的最后5行。 – Kulasangar