Apache Solr にJDBC-ODBC Bridge のデータをインポートする方法
Apache Solr は、Apache Lucene 上に構築された人気のある高速なオープンソースのエンタープライズサーチソリューションです。
Apache Solr には、データベースやXML、CSV、JSON ファイルからデータをインポートできるData Import Handler(DIH)が搭載されています。CData JDBC Driver for JDBC-ODBC Bridge と組み合わせることで、JDBC-ODBC Bridge のデータを簡単にApache Solr にインポートできます。この記事では、CData JDBC Driver をApache Solr のData Import Handler で使用し、エンタープライズサーチ用にJDBC-ODBC Bridge のデータをインポートする方法をステップバイステップで解説します。
JDBC-ODBC Bridge インポート用のApache Solr コアとスキーマを作成する
- Apache Solr を起動し、コアを作成します。
> solr create -c CDataCore
この記事では、Solr はローカル環境でスタンドアロンインスタンスとして実行されており、次のURL でコアにアクセスできます:http://localhost:8983/solr/#/CDataCore/core-overview - インポートするJDBC-ODBC Bridge のデータのカラムを表す「field」オブジェクトと、エンティティの一意キーで構成されるスキーマを作成します。JDBC-ODBC Bridge にLastModifiedDate が存在する場合は、増分更新に使用されます。存在しない場合は、後述のdeltaquery を実行できません。スキーマはApache Solr が作成したmanaged-schema ファイルに保存します。
- CData JDBC-ODBC Bridge JDBC Driver をインストールします。JAR ファイルとライセンスファイル(cdata.jdbcodbc.jar とcdata.jdbc.jdbcodbc.lic)をSolr ディレクトリにコピーします。
- CData JDBC JAR ファイル:C:\Program Files\CData\CData JDBC Driver for JDBC-ODBC Bridge ####\lib
- Apache Solr:solr-8.5.2\server\lib
JDBCODBCUniqueKey
これで、Solr でJDBC-ODBC Bridge のデータを使用する準備が整いました。
JDBC-ODBC Bridge からApache Solr へのインポートを定義する
このセクションでは、Data Import Handler の設定手順を説明します。
- 作成したコアのConfig ファイルを編集します。JAR ファイルの参照を追加し、DIH RequestHandler の定義を追加します。
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" /> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">solr-data-config.xml</str> </lst> </requestHandler> - 次に、同じ階層にsolr-data-config.xml を作成します。この記事ではJDBC-ODBC Bridge からテーブルを取得しますが、カスタムSQL クエリを使用してデータをリクエストすることもできます。Driver クラスとサンプルJDBC 接続文字列は以下のサンプルコードにあります。
<dataConfig> <dataSource driver="cdata.jdbc.jdbcodbc.JDBCODBCDriver" url="jdbc:jdbcodbc:Driver={ODBC_Driver_Name};Driver_Property1=Driver_Value1;Driver_Property2=Driver_Value2;..."> </dataSource> <document> <entity name="Account" query="SELECT Id,JDBCODBCColumn1,JDBCODBCColumn2,JDBCODBCColumn3,JDBCODBCColumn4,JDBCODBCColumn5,JDBCODBCColumn6,JDBCODBCColumn7,LastModifiedDate FROM Account" deltaQuery="SELECT Id FROM Account where LastModifiedDate >= '${dataimporter.last_index_time}'" deltaImportQuery="SELECT Id,JDBCODBCColumn1,JDBCODBCColumn2,JDBCODBCColumn3,JDBCODBCColumn4,JDBCODBCColumn5,JDBCODBCColumn6,JDBCODBCColumn7,LastModifiedDate FROM Account where Id=${dataimporter.delta.Id}"> <field column="Id" name="Id" ></field> <field column="JDBCODBCColumn1" name="JDBCODBCColumn1" ></field> <field column="JDBCODBCColumn2" name="JDBCODBCColumn2" ></field> <field column="JDBCODBCColumn3" name="JDBCODBCColumn3" ></field> <field column="JDBCODBCColumn4" name="JDBCODBCColumn4" ></field> <field column="JDBCODBCColumn5" name="JDBCODBCColumn5" ></field> <field column="JDBCODBCColumn6" name="JDBCODBCColumn6" ></field> <field column="JDBCODBCColumn7" name="JDBCODBCColumn7" ></field> <field column="LastModifiedDate" name="LastModifiedDate" ></field> </entity> </document> </dataConfig> - query セクションで、JDBC-ODBC Bridge からデータを選択するSQL クエリを設定します。deltaQuery とdeltaImportquery は、同じエンティティの2回目以降のインポートで増分更新を使用する際のID と条件を定義します。
- すべての設定が完了したら、Solr を再起動します。
> solr stop -all > solr start
JDBC-ODBC Bridge のデータのDataImport を実行する
- 以下のURL からDataImport を実行します:
http://localhost:8983/solr/#/CDataCore/dataimport//dataimport
- 「full-import」コマンドを選択し、Entity からテーブルを選択して、「Execute」をクリックします。
- Query からインポート結果を確認します。
- deltaQuery を使用した増分更新を試してみましょう。元のJDBC-ODBC Bridge データセットのデータを変更します。DataImport ウィンドウから今度は「delta-import」コマンドを選択し、「Execute」をクリックします。
- 増分更新の結果を確認します。
CData JDBC Driver for JDBC-ODBC Bridge を使用することで、JDBC-ODBC Bridge のデータのApache Solr への自動インポートを作成できます。250+ のCData JDBC Driver の無料30日間トライアルをダウンロードして、今すぐ始めましょう。