オブジェクト・ストレージ内のドキュメントでのJSON検索の使用
オブジェクト・ストレージに格納されているファイルに存在するドキュメントにJSON検索索引を構築できます。これにより、ワイルドカードを使用した検索など、JSON_TEXTCONTAINSを使用してJSONドキュメントのフィールドを検索できます。
オブジェクト・ストレージ内のドキュメントでのJSON検索の使用
オブジェクト・ストレージに格納されているファイル内のドキュメントにJSON検索索引を作成できます。JSON検索索引は、JSONドキュメント専用に設計されており、JSON_TEXTCONTAINSを使用して、ドキュメントまたはドキュメントのフラグメントに対して通常および全文検索を実行できます。
詳細は、JSON_TEXTCONTAINS条件を参照してください。
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを使用して、オブジェクト・ストレージ内のファイルにJSON検索索引を作成します。新規アップロードまたは削除に対して索引がリフレッシュされる頻度(分)を示すリフレッシュ・レートを構成できます。詳細は、「ファイル内のJSONドキュメントに対するJSON検索索引の作成」を参照してください。
JSON検索索引を作成すると、次のオブジェクトが作成されます。
-
オブジェクト・ストレージのJSONファイルに対するJSON検索索引
index_name。 -
ローカル表
INDEX_NAME$TXTIDX。この表は、オブジェクト・ストレージ内のファイル内のドキュメントと、データベースに作成されたJSON検索索引との間のマッピング表です。詳細は、JSON検索索引のリファレンス表を参照してください。 -
標準名が
INDEX_NAMEのビュー。ビューを使用して、JSON_TEXTCONTAINSを使用して検索を実行できます。このビューは、INDEX_NAME$TXTIDX表の上に作成されます。詳細は、JSON検索索引リファレンス・ビューを参照してください。 -
標準接尾辞が
index_name$txtidx_errのエラー・ログ表。詳細は、エラー・ログ表を参照してください。
JSON検索索引作成操作は、ALL_SCHEDULER_JOB_RUN_DETAILSビューに記録されます。詳細は、「テキスト索引作成の監視」を参照してください。
Autonomous AI Databaseは、JSONドキュメントを含む様々なテキスト・ファイルのJSON検索索引作成をサポートしています。たとえば、JSONファイルを圧縮形式と非圧縮形式の両方で索引付けしたり、別のJSONドキュメント・デリミタを選択できます。ファイル処理オプションの詳細は、「DBMS_CLOUDパッケージ」を参照してください。
詳細は、「Oracle Textを使用した索引付け」を参照してください。
ファイル内のJSONドキュメントに対するJSON検索インデックスの作成
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを使用して、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を作成します。
Oracle Textの停止語の詳細は、「Oracle Textを使用した索引付け」を参照してください。
-
ソースの場所にアクセスするための資格証明オブジェクトを作成します。
詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
-
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXプロシージャを実行して、オブジェクト・ストレージ・ファイルにJSON検索索引を作成します。BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX ( credential_name => 'OBJ_STORE_CRED', location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/vcnlogs/', index_name => 'VNCLOGS', format => JSON_OBJECT ('json_index' value 'true', 'json_index_doc_len' value 12000, 'file_compression' value 'gzip') ); END; /この例では、次を作成します。
-
location_uriパラメータで指定されたURIにあるオブジェクト・ストレージ・ファイルのJSON検索索引
VNCLOGS。 -
ローカル表
VNCLOGS$TXTIDX。詳細は、JSON検索索引のリファレンス表を参照してください。 -
VNCLOGSという名前のビュー。このビューは、VNCLOGS$TXTIDX表の上に作成されます。ビューを使用して、JSON_TEXTCONTAINSを使用して検索を実行できます。詳細は、JSON検索索引リファレンス・ビューを参照してください。 -
VNC$TXTIDX_ERRという名前のエラー・ログ表。この表には、ファイル内の無効なJSONドキュメントのリストが含まれています。詳細は、エラー・ログ表を参照してください。
JSON検索索引を作成した後、
VNCLOGSビューを問い合せることができます。次に例を示します。SELECT JSON_QUERY (data, '$' returning CLOB pretty) AS RECORD FROM vnclogs WHERE JSON_TEXTCONTAINS(file_line_json, '$.tuples', '{XXX.XXX.0.1.10.10.10.10.null.XXX_345}');この問合せは、
JSON_TEXTCONTAINS条件で指定されたIPアドレスのログ詳細を返します。JSON検索索引基準は、データベース内のJSON検索索引表の索引付き列であるfile_line_json列に指定され、JSONドキュメントは、data列を介して表されるオブジェクト・ストレージから直接ストリーミングされることに注意してください。data列には、オブジェクト・ストレージ・ファイルの内容が含まれます。詳細は、CREATE_EXTERNAL_TEXT_INDEXプロシージャを参照してください。
-
JSON検索索引の削除
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEXプロシージャを使用して、オブジェクト・ストレージに格納されているJSONファイルのJSON検索索引を削除します。
たとえば:
BEGIN
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
index_name => 'VCNLOGS',
);
END;
/この例では、VCNLOGS JSON検索索引を削除します。
詳細は、DROP_EXTERNAL_TEXT_INDEXプロシージャを参照してください。
JSON検索索引作成のモニター
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを実行すると、JSON検索索引作成操作がALL_SCHEDULER_JOB_RUN_DETAILSビューに記録されます。
ALL_SCHEDULER_JOB_RUN_DETAILSビューを問い合せて、索引作成ジョブによって報告されたステータスおよびエラーを取得できます。
DBMS_SCHEDULERジョブの名前は、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXをコールするときに指定したINDEX_NAMEパラメータから導出されます。
ALL_SCHEDULER_JOB_RUN_DETAILSビューを問い合せるには、ADMINユーザーとしてログインしているか、ALL_SCHEDULER_JOB_RUN_DETAILSビューに対するREAD権限を持っている必要があります。
たとえば、job_nameにWHERE句を指定した次のSELECT文は、ジョブの実行の詳細を示します。
SELECT status, additional_info
FROM all_scheduler_job_run_details WHERE LOWER(job_name) = LOWER('index_name$JOB');索引作成スケジューラ・ジョブが存在するかどうかを問い合せることもできます。
たとえば:
SELECT status
FROM all_scheduler_jobs where LOWER(job_name) = LOWER('index_name$JOB');詳細は、CREATE_EXTERNAL_TEXT_INDEXプロシージャを参照してください。
JSON検索索引参照表
ローカル表は、標準の接尾辞INDEX_NAME$TXTIDXを使用してデータベース内に作成されます。この表は、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXの実行時に内部的に作成されます。
INDEX_NAME$TXTIDX表を問い合せて、JSON_TEXTCONTAINSキーワードを使用して文字列を検索できます。たとえば、INDEX_NAME値をVNCLOGSとしてDBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXプロシージャをコールすると、VNCLOGS$TXTIDX JSON検索索引参照表が作成されます。
JSON検索索引参照表には、次の列があります。
-
object_name: 検索されたテキスト文字列を含むオブジェクト・ストレージ上のファイル名です。 -
object_path: オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURIです。 -
length: JSONドキュメントの長さです。 -
offset: ファイルの先頭のバイト・オフセットです。 -
mtime: オブジェクト・ストレージ・ファイルの最終変更タイムスタンプです。これは、ファイルがDBMS_CLOUDによって最後にアクセスされた時刻です。
次の問合せを実行して、JSON検索索引参照表からオブジェクト名、オブジェクト・パス、オフセットおよび長さを取得します:
SELECT * FROM (SELECT object_name, object_path, length, offset
FROM vnclogs$txtidx
WHERE JSON_TEXTCONTAINS (file_line_json, '$.tuples', '{XXX.XXX.0.1.10.10.10.10.null.XXX_345}')
ORDER BY mtime DESC)
WHERE rownum < 3;この問合せは、オブジェクト・ストレージ内のファイル内の関連ドキュメントの場所に関する内部情報を提供します。問合せでは、実際のドキュメントは提供されません。
ドキュメントを直接取得するには、次の問合せを使用します。
SELECT * FROM (SELECT object_name, object_path, data
FROM vnclogs
WHERE JSON_TEXTCONTAINS (file_line_json, '$.tuples', '{XXX.XXX.0.1.10.10.10.10.null.XXX_345}')
ORDER BY mtime DESC)
WHERE rownum < 3;JSON検索インデックスリファレンスビュー
INDEX_NAMEという名前のビューは、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを実行してJSON索引を作成すると作成されます。
ビュー自体にデータは含まれていません。データは、SQL条件JSON_TEXTCONTAINSを使用してINDEX_NAMEビューを問い合せると、ビューでフェッチされます。
| 列 | 摘要 |
|---|---|
OBJECT_NAME |
検索されたテキスト文字列を含むオブジェクト・ストレージ上のファイル名。 |
OBJECT_PATH |
オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURI。 |
LENGTH |
JSONドキュメントの長さ。 |
OFFSET |
ファイルの先頭のバイトオフセット。 |
DATA |
オブジェクト・ストレージ・ファイルのコンテンツ。 |
FILE_LINE_JSON |
JSON_TEXTCONTAINSが実行される列。 |
MTIME |
オブジェクト・ストレージ・ファイルの最終変更タイムスタンプ。これは、ファイルがDBMS_CLOUDによって最後にアクセスされた時刻です。 |
エラー・ログ表
エラー・ログ表index_name$txtidx_errは、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を作成すると作成されます。
この表には、ファイル内の無効なJSONドキュメントのリストが含まれています。索引付けされるソース・ファイルの長さがデフォルト値または指定された値を超える場合、JSONドキュメントは無効としてマークされます。デフォルト値は32767バイトで、json_index_doc_len formatオプションを使用して指定できる最大値は200000バイトです。詳細は、「ファイル内のJSONドキュメントに対するJSON検索索引の作成」を参照してください。
index_name$txtidx_errを問い合せて、索引の作成時にレポートされた無効なJSONファイルのリストを取得できます。
| 列 | 摘要 |
|---|---|
OBJECT_NAME |
検索されたテキスト文字列を含むオブジェクト・ストレージ上のファイル名。 |
OBJECT_PATH |
オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURI。 |
OFFSET |
行の先頭のバイトオフセット。 |
LENGTH |
JSONドキュメントの長さ。 |
LINE_NUMBER |
オブジェクト・ストアのファイル内の行番号。 |