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