LoginSignup
1
1

More than 3 years have passed since last update.

MongoDBとElasticsearchをJDBCドライバで連携する

Last updated at Posted at 2020-07-30

はじめに

Elasticsearchは、すべての種類のドキュメントをほぼリアルタイムで検索する際に使用できる検索エンジンです。
また、MongoDBも非常に利用者の多い NoSQLデータベースで、こちらはデータ保存にJSONデータモデルを使用しますが、標準SQLでMongoDBをCRUD操作できればより良いかもしれません。

この記事では、DataDirect コネクタを活用し、MongoDBからElasticsearchにJDBCでデータ連携。リアルタイムに分析する方法について記述します。DataDirectコネクタについては、DataDirect for MongoDB JDBCドライバでもご覧ください。

記事の前提
Elasticsearch 2.3.4
MongoDB

データをお持ちでない場合は、MongoDBが提供する Restaurantサンプルデータ を使用ください。

DataDirect for MongoDB JDBCコネクタのインストール

お試しとして、こちらから DataDirect MongoDB 用コネクタ をダウンロードします。

PROGRESS_DATADIRECT_JDBC_MONGODB_WIN.zip
を解凍後、

PROGRESS_DATADIRECT_JDBC_INSTALL.exe

を実行し、MongoDB用コネクタをインストールします。

Elasticsearch用 JDBCインポーターの設定

  1. こちらから、Elasticsearch用のJDBCインポーター をダウンロード&解凍します。

  2. DataDirect MongoDB JDBCコネクタ(mongodb.jar)

    C:\ProgramFiles\Progress\DataDirect\JDBC_60\lib
    から
    \path\elasticsearch-jdbc-2.3.4.0\libフォルダにコピーします。

  3. \path\elasticsearch-jdbc-2.3.4.0\bin
    に移動し、batファイルを以下のスクリプトで作成し、保存します。

@echo off

set DIR=%~dp0
set LIB=%DIR%..\lib\*
set BIN=%DIR%..\bin

REM ???
echo {^
"type" : "jdbc",^
"jdbc" : {^ "url" : "jdbc:datadirect:mongodb://:27017;DatabaseName=;TransactionMode=Ignore",^
"user" : "",^
"password" : "",^
"sql" : "select BOROUGH, RESTAURANT_ID, CUISINE, NAME, _ID from restaurants",^
"elasticsearch" : {^
"cluster" : "elasticsearch",^
"host" : "localhost",^
"port" : 9300^
},^
"index" : "restaurants"^
}^ }^ | "%JAVA_HOME%\bin\java" -cp "%LIB%" -Dlog4j.configurationFile="%BIN%\log4j2.xml" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter"

MongoDBデータをElasticsearchにインポート

1, 接続が確立したら、Elasticsearchインストールフォルダに移動し、まだ実行されていない場合はコマンドを使用して実行します。

bin\elasticsearch.bat

2, \path\elasticsearch-jdbc-2.3.4.0\bin
に移動し、先ほど作成したバッチファイルを実行して、MongoDBからElasticsearchへのデータのインポートを開始します。結果はログフォルダ内のjdbc.logで確認できます。

データの検索

これで、MongoDBデータはElasticsearchノードにあるため、自由自在に検索できます。
参考としていくつかの例を示します。

(これらのリンクは、上記の手順でローカルのElasticsearch環境をセットアップした後にのみ有効です。)

http://localhost:9200/restaurants/
http://localhost:9200/restaurants/_search
http://localhost:9200/restaurants/_search?q=CUISINE:Chinese

簡単ですね!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1