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_parametersを参照してください。
関連键点:
ここで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" } }