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_stringjdbc_userjdbc_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"}
} ]
}
}