mysqlデータをElasticSearchに同期するためのベストプラクティス

Elasticsearchは、リアルタイムの分散検索および分析エンジンです。これは、前例のない速度で大規模なデータを処理するのに役立ちます。ElasticSearchは、Luceneをベースにした検索サーバーです。これは、RESTful Webインターフェースに基づいて、分散マルチユーザー機能を備えたフルテキスト検索エンジンを提供します。ElasticsearchはJavaで開発され、Apacheライセンスの条件の下でオープンソースとしてリリースされています。これは人気のあるエンタープライズ検索エンジンです。クラウドコンピューティングで使用するように設計されており、リアルタイム検索、安定性、信頼性、高速性、およびインストールと使用の容易さを実現できます。

esとheadプラグインをインストールします。省略します。

大量のデータでリアルタイムの高速クエリを提供できるようにするには、mysqlは明らかに無力であるため、esを使用してビッグデータ検索サービスを提供する必要があります。一般的なシナリオは、製品または商品の検索です。

1つ目はデータの同期です。mysqlデータをesに同期する方法はたくさんあります。テスト後、安定していて使いやすいのはlogstash-input-jdbcです。

logstash-input-jdbcプラグインをインストールするにはどうすればよいですか?

参照:http//blog.csdn.net/yeyuma/article/details/50240595#quote 

完全同期と増分同期

完全同期とは、通常、esが確立されて最初の同期に使用されるときに、すべてのデータをesに同期することを意味します。増分同期とは、後続の更新を同期し、レコードをesに挿入することを意味します。(削除されたレコードを同期する方法はありません。両側で独自の削除コマンドを実行することしかできません)
社内の慣行によれば、logstash-input-jdbcの増分同期の原則は非常に単純です。増分同期を行うときは、挿入レコードと更新レコードを知る必要があります。したがって、ESが検索サービスを提供するテーブル(同期されるターゲット)に入るには、update_timeを追加する必要があり、このフィールドは挿入および更新されるたびに更新されるため、logstash- input-jdbcを知っているだけです。
詳細については、https//www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#_predefined_pa​​rametersを参照してください。

関連键点:
ここでt.update_time>:sql_last_value

試験結果:

最初にデータを更新します

次に、esでクエリを実行して、次のように更新されているかどうかを確認します。

自動的に正常に同期されました!

複数のテーブルを同時に同期する必要がある場合は、次の構成が必要です

コードをコピーする
input { 
  jdbc { 
    jdbc_driver_library => "/Users/logstash/mysql-connector-java-5.1.39-bin.jar" 
    jdbc_driver_class => "com.mysql.jdbc.Driver" 
    jdbc_connection_string => "jdbc:mysql:// localhost :3306 / database_name " 
    jdbc_user =>" root " 
    jdbc_password =>" password " 
    schedule =>" * * * * * " 
    statement =>" select * from table1 " 
    type =>" table1 " 
  } 
  jdbc { 
    jdbc_driver_library =>" / Users / logstash / mysql-connector-java-5.1.39-bin.jar " 
    jdbc_driver_class =>" com.mysql.jdbc.Driver " 
    jdbc_connection_string =>" jdbc:mysql:// localhost:3306 / database_name " 
    jdbc_user =>" root " 
    jdbc_password =>" password "
    schedule => "* * * * *"
    statement => "select * from table2" 
    type => "table2" 
  } 
  #ニーズに合わせてjdbc入力を追加
} 
output { 
        elasticsearch 
    { index => "testdb" 
        document_type => "%{type}"#<-使用する各入力
        ホストから入力=> "localhost:9200" 
    } 
}
コードをコピーする

おすすめ

転載: blog.csdn.net/litianquan/article/details/80870046