mysqlのESに増分同期データをlogstash

Benpian章アドレスします。https://www.cnblogs.com/Thehorse/p/11601013.html

今日はESにlogstash同期mysqlのデータについて話しています

 

私はそれを考える、logstashは、最も安定かつ簡単に1を設定するには、-ESを接続するために多くの同期のMySQLのデータのうちの1つです。

 

入力{
STDIN {
}

JDBC {
タイプ=> "XXX"
jdbc_connection_stringは=> "JDBC:MySQLの://127.0.0.1:3306 / yinhelaowu"
jdbc_user => "ルート"
jdbc_password => "ルート"
jdbc_driver_library =>「mysql1 / MySQLの-connector-のJava 5.1.17-bin.jarを」
jdbc_driver_class => "はcom.mysql.jdbc.Driver"
jdbc_paging_enabled =>真
jdbc_page_size => "500"
record_last_run =>真
use_column_value =>真
tracking_column => "ID"
last_run_metadata_path => "mysql1 / jdbc1"
clean_run => "偽"


statement_filepath => "mysql1 / jdbc.sql"
スケジュール=> "* * * * *"
clean_run =>偽
}

}

 

私は、これは任意の値を定義することができます。jdbc {}このプロセスオブジェクト、型を宣言するために主にあるタイプのように、これらの属性の役割、について話しています

jdbc_connection_stringは、これはデータベースのアドレスと同様に、ユーザー名とパスワードです

logstashを使用してjdbc_driver_library、logstashは、MySQLのJDBCおよびJava環境を接続する必要が設​​定されている必要があり、上記jdk1.8

名前のstatement_filepathをjdbc_driver_classへの接続は、このSQL文が実行されます 

 それがある場合は、データのスケジュール同期はどのくらいです****** 1分同期時間を表し

last_run_metadata_pathこれは、たとえば、あなたは記録時間、および自動インクリメントIDを作成することができますが、最後のデータを同期する値のいくつかを記録します

タイプのインデックスタイプ

データが実行されたかどうかは明らかClean_run

 

下へ

#これは、出力ストリームです

output {
#这个type是上面jdbc的type,有了这个if就可以进行批处理 if [type]=="TInquiryInfo"{ elasticsearch {
    #这边的端口一定是9200,java中使用的端口是9300这边不要弄混了 hosts => ["localhost:9200"] # 索引名称 index => "ca-inquiry" # type名称 document_type => "TInquiryInfo" # 文档id,inquiryId为sql文件中查询出的字段名 document_id => "%{inquiryId}" } } }


下面是执行的sql写法

u.`area_id`はC zsf_carftsmanshipからu.`age`、u.`praise`、場所などのC *、CONCAT(CONCAT(c.lat、 '')、c.lng)を選択
LEFT zsf_user uをON JOIN c.user_id = u.`id` WHERE c.id>:sql_last_value

データクエリのelasticsearchような大規模な量のように、クエリに関連付けられたマルチテーブルは、間違いなく、パフォーマンスに大きな影響を与えるので、私は直接関係のクエリを行うためにここにいます

だから、非常にこのクエリのパフォーマンスを向上させることができES:sql_last_value値をlast_run_metadata_pathに記録されています

 






 

おすすめ

転載: www.cnblogs.com/Thehorse/p/11601013.html