- 統合ガイド
- エラスティック・サーチとの統合による全文検索
- 全文索引の管理
- JSONデータ型の処理
- 索引付けされたJSONドキュメントの全文検索
索引付けされたJSONドキュメントの全文検索
この項では、セキュリティなしで簡単だが完全な例を実行するステップを示します。本番設定では、通常、Oracle NoSQL DatabaseとElasticsearchクラスタの両方は個別のノードで実行する必要がありますが、わかりやすくするために、これらのステップは単一ノードで実行します。また、環境でElasticsearchバージョン2のクラスタがすでに実行されている場合は、次で使用するElasticsearch単一ノード・クラスタのかわりに、このクラスタを自由に使用できます。最後に、特定の環境にあわせてトークン(ディレクトリの場所、バージョン番号など)の一部を変更する必要がある場合があります。
- Elasticsearchバージョン2をダウンロード、インストールおよび実行します。
tarファイルhttps://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.6/elasticsearch-2.4.6.tar.gzをダウンロードし、ディレクトリ
/opt/es
に配置します。cd /opt/es tar xzvf elasticsearch-2.4.6.tar.gz ln –s elasticsearch-2.4.6 elasticsearch export JAVA_HOME=/usr/lib/jvm/java8 /opt/es/elasticsearch/bin/elasticsearch -Dnetwork.host=localhost --cluster.name kv-es-cluster --node.name localhost
ノート:
Elasticsearchバージョン2では、Java 8が必要です。そのため、Java 8をインストールし、Java 8のホーム・ディレクトリを指すようにJAVA_HOME
環境を設定する必要があります。 - KVLiteを使用して、kvstoreという名前のOracle NoSQL Databaseストアをデプロイします。
Oracle NoSQL Databaseをディレクトリ
/opt/ondb
にインストールし、システムの/tmp
ディレクトリに対する書込み権限があると仮定した場合は、次のコマンドをコマンドラインから実行します。java –jar /opt/ondb/kv/lib/kvstore.jar kvlite –root /tmp/kvroot –host localhost –port 5000 –store kvstore –secure-config disable
- Oracle NoSQL Database管理CLIを起動します。
別のコマンド・ウィンドウから、次のコマンドを実行します。
java –jar /opt/ondb/kv/lib/kvstore.jar runadmin –host localhost –port 5000 –store kvstore
- ロードするJSONドキュメントを含むファイルをインストールします。
~/examples/es/docs
などのディレクトリで、senator-info.json
という名前のファイルを作成し、サンプル: JSONドキュメントの配列に示されたサンプル・ファイルに示すような1つ以上のJSONドキュメントを移入します。サンプル: JSONドキュメントの配列に示す書式と同じ書式で、作成するファイルを書式設定するようにしてください。 LoadJsonExample
プログラム(または同様のプログラム)をコンパイルし、実行します。~/examples/es/src
などのディレクトリで、サブディレクトリes/table
を作成し、ディレクトリ~/examples/es/src/es/table
にLoadJsonExample.java
という名前のファイルを作成します。ファイル~/examples/es/src/es/table/LoadJsonExample.java
を作成したら、LoadJsonExampleプログラム・ソースに示されたソース・コード(または同様の機能を備えたソース)を追加します。LoadJsonExample.java
プログラムが作成されたら、別のコマンド・ウィンドウから次を実行します。cd ~/examples/es/src javac –classpath /opt/ondb/kv/lib/kvstore.jar:src examples/es/table/LoadJsonExample.java java –classpath /opt/ondb/kv/lib/kvstore.jar:src es.table.LoadJsonExample –store kvstore –host localhost –port 5000 –file ~/examples/es/docs/senator-info.json -table exampleJsonTable
ノート:
LoadJsonExampleプログラム・ソースに示されているLoadJsonExample
プログラムのソース・コードは、重要なJSONコンテンツをOracle NoSQL表にロードするための便利なメカニズムを提供するためのものにすぎません。同様の機能を提供する独自のプログラムを自由に記述してください。- NoSQL表にロードされるJSONデータに対してテキスト索引を作成します。
表が正常に作成され、目的の表データが移入されたことを確認したら、管理CLIから次を実行します。
kv-> plan register-es –clustername kv-es-cluster –host localhost –port 9200 –secure false -wait kv-> execute 'CREATE FULLTEXT INDEX jsonTxtIndex ON exampleJsonTable ( jsonField.current{"type":"boolean"}, jsonField.party{"type":"string","analyzer":"standard"}, jsonField.duties.committe{"type":"string"}, jsonField.contrib{"type":"double"})';
- Elasticsearchで索引付けされたデータに対して全文検索問合せを実行します。
最初に、目的の索引がElasticsearchで予想どおりに作成されていることを確認するには、コマンドラインから次を実行します。
curl –X GET 'http://localhost:9200/_cat/indices' yellow open ondb.kvstore._checkpoint ... yellow open ondb.kvstore.examplejsontable.jsontxtindex ...
Elasticsearchによって各索引のステータスが黄色でレポートされます。このようになるのは、Elasticsearchクラスタが単一ノード・クラスタとしてデプロイされたためです。
Oracle NoSQLでElasticsearch用に構成されるマッピングを確認するには、次を実行します。
curl –X GET 'http://localhost:9200/ondb.kvstore.examplejsontable.jsontxtindex/_mapping?pretty'
Elasticsearchで索引付けされた
exampleJsonTable
からすべてのドキュメントを表示するには、次を実行します。curl –X GET 'http://localhost:9200/ondb.kvstore.examplejsontable.jsontxtindex/_search?pretty'
最後に、caucusがProgressiveまたはHuman Rightsの議員である、献金の合計が500万から1500万ドルである現在の民主党上院議員をすべて検索するには、次のコマンドを実行します。
curl –X GET 'http://localhost:9200/ondb.kvstore.examplejsontable.jsontxtindex/_search?pretty' '-d {query":{"bool":{ "must":{"match":{"jsonField.party":"Democrat"}}, "must":{"match":"jsonField.current":"true"}}, "must":{"range":{"jsonField.contrib":{"gte":"5000000.00","lte":15000000.00"}}}, "must":"match":{"jsonField.duties.caucus":"Progressive Human Rights"}}}}}'