logstashを使用してmysql dbからelasticsearchにインデックスを作成しようとしています。 Logstashはエラーなしで実行されていますが、問題はSELECTクエリから1行しか索引付けされていないことです。 以下は、私が使用しているソフトウェアのバージョンです:Logstashは、mysqlから弾性検索への選択クエリの1行のみをインデックスしています。
- 弾性検索:2.4.1
- logstash:5.1.1
- のMySQL:5.7.17
- jdbc_driver_libraryます。mysql-コネクタ - Javaベース5.1.40-bin.jar
これは、logstashとelasticsearchのバージョンが異なるためです。
以下は私のパイプライン構成である:output
であなたがjdbc
プラグインで使用している
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"]
}
}
返信いただきありがとうございます。私はいくつかのことではっきりしていません。スケジューラが実行されるたびに、すべての行と再インデックスを選択します(私はtracking_columnを持っているので、重複しないと理解しています)。たとえば、最初はテーブルに10行あり、それらはESで索引付けされています。次回スケジューラーが実行される前に、さらに5行が追加されます。スケジューラは15行または5行を選択しますか?私の理解は、次の場合です:選択クエリでsql_last _valueが使用された場合は5が選択され、それ以外の場合は15が選択されます。私の理解を明確にしてください。 –
@MaruthiPodilaうん、そうです。 sql_last_valueが最後に更新されたIDを指している場合、スケジューラが再び実行されたときに追加された最後の5行が常に選択されます。 – Kulasangar