ロードElasticSearch学習 - logstash-JDBC-入力およびデータ同期のMySQLを使用して

著作権:転載、リンクを添付してくださいhttps://blog.csdn.net/qq_23536449/article/details/90898507

ほとんどの場合、我々のデータはデータベースに保存されているが、我々は検索を行う場合は、我々はlogstashを使用elasticsearchする同期して、データベース内のデータを、必要な時であるので、それは、独自のインデックスデータベースを持っているelasticsearchデータベースの同期、データベースの同期とlogstashのために、私たちは時間を設定することができますelasticsearchデータベースと同期してlogstash-JDBC-入力プラグイン、同期にこのアプローチを使用することは、まだ非常に便利です。

 logstash 1.ダウンロードしてインストールし
、ダウンロードしたバージョンと一貫性のある、あなたのelasticsearchのバージョン番号に私のバージョンelasticsearch6.3.0の注意を
:logstashダウンロードhttps://www.elastic.co/downloads/logstashを
ダウンロードしたら、直接解凍します

 2. logstashを設定
logstash5.xため以降、それはプラグイン自体を統合した、我々は別途インストールする必要はありません、直接使用することができます。私は、logstashファイルディレクトリに、シンプルな構成と同期のMySQLの話を(自由に名前の)新しいフォルダを作成するためにここにいます。以下のような:mysqlの


 2.1。このフォルダへの最初のJDBCドライバは、MySQLデータベースの接続に使用される
 の.conf設定ファイル(ランダム名)を作成し2.2、データベースESに関連付けるために使用され、ここでmysql.confであります

{INPUTの
    JDBC {
      タイプ=> "tb_user"の
      #MySQLデータベースへのリンク、データベース名の店
      jdbc_connection_stringは=> ":MySQLの://192.168.1.231:JDBC 3306 / dcp_test"
      #ユーザ名とパスワード
      jdbc_user => "gyadmin"
      jdbc_password => "!!グレイ(DJZ 159"
      #ドライバ
      jdbc_driver_library => "F:/elkStudy/logstash/logstash-6.2.3/mysql/mysql-connector-java-5.1.42.jar"
      ドライバクラス名
      jdbc_driver_class =>「COM .mysql.jdbc.Driver "
      jdbc_paging_enabled =>"真の"
      jdbc_page_size =>" 50000 "
      SQLファイルパス#実行+名前
      statement_filepath =>" F:/elkStudy/logstash/logstash-6.2。3 / MySQLの/ jdbc.sql」
      (左から右へ)#、時間、日、月、年は各フィールドの意味ポイントのリスニング間隔を設定し、すべて*デフォルトではすべての更新毎分であります
      =スケジュール> "* * * * *"
    }
    
    JDBC {
      タイプの=> "tb_tree"
      #MySQLデータベースへのリンク、データベース名の店
      jdbc_connection_stringは=> "JDBC:MySQLの://192.168.1.231:3306 / dcp_test"
      #ユーザ名とパスワード
      = jdbc_user> "gyadmin"
      jdbc_password => "!!グレイ(DJZ 159"
      #ドライバ
      jdbc_driver_library => "F:/elkStudy/logstash/logstash-6.2.3/mysql/mysql-connector-java-5.1.42.jar"
      #ドライバのクラス名
      jdbc_driver_class => "はcom.mysql.jdbc.Driver"
      jdbc_paging_enabled => "真の"
      jdbc_page_size => "50000"
      実行+名前の#SQLファイルパス
      statement_filepath => "F:/elkStudy/logstash/logstash-6.2.3/mysql/jdbc_tree.sql"
      #セットポイント(左から右へ)間隔、時間、日、月、年、すべて*デフォルトは毎分更新されているリスニングフィールドの説明を
      スケジュール=>「* * * * *」
    }
}
フィルタ{
    JSON {
        ソース=> "メッセージ"
        remove_field => [ "メッセージ"]
    }
}
の出力{
    IF [タイプ] == "tb_user" {
        elasticsearch {
            のIPアドレスとポート#のES
            ホスト=> [ "192.168.3.94:9200"]
            #インデックス名前
            インデックス=>「mysql_tb_user」
            データベース位IDがの種類に対応する、idフィールドを相関させる必要が
            DOCUMENT_ID =>「%{ID}」
            #文書タイプ
            DOCUMENT_TYPE =>「ユーザ」
        }
    }
    もし[タイプ] == "tb_tree" {
        {elasticsearch
            位ES IPアドレスとポート
            のホストを=> [ "192.168.3.94:9200"]
            #インデックス名
            インデックス=> "mysql_tb_tree"
            データベース関連必要#IDフィールドは、IDの対応する型を持っている
            "DOCUMENT_ID => {ID}% "
            #文書型
            DOCUMENT_TYPE =>"木"
        }
    }
    STDOUT {
        #は、JSON形式を出力
        CODEC => json_lines
    }
}

2.3本実施形態とjdbc.sql jdbc_tree.sqlのように、SQLファイル(ランダムな名前)を作成します。注意:SQLは最後にすることはできません、それ以外の時間は、(理由については、後述する)エラーを実行します
jdbc.sql:

tb_user SELECT * FROM

jdbc_tree.sql

tb_tree SELECT * FROM

3. [スタート] logstash
CMDを使用して、binディレクトリのlogstashでは、コマンドを実行します。logstash -f ../mysql/mysql.conf、次の情報が表示されます

このスクリプトの実行、同期プロセスで見ることができ、それがラップされ、それは、SQLスクリプトのターミネータを持つことはできません。道のうちJSON文字列(デフォルトのフィールド名すべて小文字のa)は、印刷データを同期させるためにドロップします

4.チェックデータelasticsearchヘッド

あなたは、すべてのデータがelasticsearchに同期されています見ることができます。ただし、デフォルトのインデックスに@versionを増加させ、二つのフィールド@timestamp
5.ピットステップ
を参照して、メッセージはメインクラスのソリューションを見つけることができません開始logstashを:https://www.cnblogs.com/sbj-dawn/p/8549369 .HTML
6.Q&
1、新規または更新されたデータベースのデータを、私たちは、自動的に最新のデータESに同期する(ここでは、私は毎分を設定し、最小周波数である)logstashが設定時間に基づいて行われることがわかります。
2、logstashは現在、増分データのみ、インクリメンタルテーブルをサポートし、その同期は物理的にデータやテーブルを削除できません。この問題を解決するには、参照することがhttps://blog.csdn.net/laoyang360/article/details/51747266

おすすめ

転載: blog.csdn.net/qq_23536449/article/details/90898507