Logstashのリレーショナル・データベース(mysqlまたはoracle)データのElasticSearchへの入力


mysqlやoracleのデータをesにインポートしたい場合もありますが、いくつかの方法があります.ここでは、Logstashのjdbc-inputプラグインを利用して実現できる簡単な方法を紹介します.
公式ドキュメントリンクの表示:https://www.elastic.co/guide/en/logstash/2.1/plugins-inputs-jdbc.html
 
例えばmysqlのあるテーブルをESにインポートしたい場合、Logstashのconfは以下のように設定できます.
input {
   #this config:output must be es,because the data maybe twice or more ,es can duplicate #removal
   jdbc {
    jdbc_driver_library => "../lib/mysql-connector-java-5.1.33.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://10.130.3.211:3306/charts"
    jdbc_user => "dbcharts"
    jdbc_password=> "Abcd1234"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    last_run_metadata_path => "/diskb/logstashlog/.logstash_jdbc_last_run"
   # statement_filepath => "jdbc.sql"
   # parameters => { "favorite_artist" => "Beethoven" }
    schedule => "* * * * *"
    statement => "SELECT * from mr_history_analy"
  }
}
output {
        elasticsearch{
          hosts => [ "10.130.2.200:9200","10.130.2.201:9200"]
          flush_size=>50000
          workers => 5
          document_id => "%{jobid}"
          index=> "logstash-jdbc-mr-history"
        }
}

上記のスクリプトはテーブルをcharts.mr_history_analyのデータはESにインポートされ、インデックス名はlogstash-jdbc-mr-history
以下の点に注意してください.
1、mysql-connector-java-5.1.33.jarはmysqlの接続パッケージで、自分である経路に置いてjdbc_を使う必要がありますdriver_library指向でいいです.
2、last_run_metadata_pathパラメータは、前回の実行結果を記録し、ブレークポイント実行に使用します.
3、scheduleはcrontabのスケジューリングのように、例では1分ごとに実行されます.
4、statementは実行する文で、条件を加えることができる.しかし、Logstashのconfスクリプトは起動初期化であり、動的パラメータは受け入れられないため、起動時に文が固定されていることを理解する必要があります.
5、outputにdocument_があるid:プライマリ・キー・カラム名を入力して、リファクタリングに使用できます.