SQLServerからLogstashを使ってElasticsearchにデータを投げ込む
今回はSQLServerからElasticsearchにデータを入れていきます。
Elasticsearch1.XではJDBC River Plugin
を使用する例をよく見かけますが、Elasticsearch2.0ではRiverが使用できない為、Logstashを使います。
手順
1.Microsoft JDBC Driver 4.2 for SQL Serverをダウンロード
JavaでSQLServerに接続する為にJDBCを使う為、下記サイトよりダウンロード。
ダウンロード時に選択肢がでてくるので、sqljdbc_4.2.6420.100_jpn.exe
を選択。
実行後の解凍先のパスは後で使用するため覚えておく。
2.Logstashにプラグインをインストール
Logstashがない場合は下記サイトからダウンロードして、適当な場所に解凍。
LogstashにJDBCからの入力用プラグインをインストール。
bin\plugin install logstash-input-jdbc
3.Logstash実行用の設定ファイルを作成
今回はlogstash.conf
というファイル名で作成します。
input { jdbc { jdbc_driver_library => "C:\Tools\sqljdbc_4.2\jpn\sqljdbc42.jar" jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" jdbc_connection_string => "jdbc:sqlserver://127.0.0.1:1433;user=USER;password=PASSWORD;" jdbc_user => "USER" jdbc_password => "PASSWORD" statement => "SELECT * FROM [ESTest].[dbo].[User]" } } filter { } output { elasticsearch { hosts => "localhost" index => "estest" document_type => "user" } stdout { codec => rubydebug } }
中身は環境に合わせて書き換えます。
jdbc_driver_library
:手順1で解凍したJDBC Driverの中にあるファイルのパス
jdbc_connection_string
jdbc_user
jdbc_password
:SQLServerの接続情報
statement
:SQLServerからデータを取得するクエリ
hosts
:Elasticsearchの場所
index
:Elastcsearchのインデックス名
document_type
:Elasticsearchのタイプ名
4.Logstashへデータ投入
今回投入するSQLServerのデータ(1000件)
Elasticsearchを起動した後、Logstashを実行。
bin\logstash -f logstash.conf
実行してしばらくするとデータが取り込まれていく。 下は1000件取り込み終わった状態。
出力にデータの中身が見えるのは、Logstash.confにてstdout { codec => rubydebug }
としている為。
5.結果確認
http://localhost:9200/estest/user/_search?pretty
にアクセスすると、Elasticsearchにデータが投入されているのが分かる。
(10件が取得される)
{ "took" : 120, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1000, "max_score" : 1.0, "hits" : [ { "_index" : "estest", "_type" : "user", "_id" : "AVEgP6FCqw5FrA9tFpKe", "_score" : 1.0, "_source":{"userid":"2B7CC8B5-C983-4E6D-8618-0CA8CBD8BDE3","name":"Name2","birthday":"2015-11-19 00:00:00 +0900","@version":"1","@timestamp":"2015-11-19T14:56:56.507Z"} }, { ・ ・ ・ }, { "_index" : "estest", "_type" : "user", "_id" : "AVEgP6FCqw5FrA9tFpLR", "_score" : 1.0, "_source":{"userid":"8A35BD90-510A-4729-A778-E21D77FBB004","name":"Name53","birthday":"2016-01-09 00:00:00 +0900","@version":"1","@timestamp":"2015-11-19T14:56:57.715Z"} } ] } }