オブジェクト・ストレージのドキュメントでのJSON検索の使用
オブジェクト・ストレージに格納されたファイルにあるドキュメントにJSON検索索引を構築できます。これにより、ワイルドカードを使用した検索など、JSON_TEXTCONTAINS
を使用してJSONドキュメントのフィールドを検索できます。
- オブジェクト・ストレージのドキュメントでのJSON検索の使用
オブジェクト・ストレージに格納されているファイルのドキュメントにJSON検索索引を作成できます。 JSON検索索引は、JSONドキュメント用に特別に設計されており、JSON_TEXTCONTAINS
を使用して、ドキュメントのドキュメントまたはフラグメントに対して、通常および全文検索を実行できます。 - ファイル内のJSONドキュメントに対するJSON検索索引の作成
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX
を使用して、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を作成します。 - JSON検索索引の削除
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX
プロシージャを使用して、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を削除します。 - JSON検索索引作成のモニター
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX
を実行すると、JSON検索索引作成操作がALL_SCHEDULER_JOB_RUN_DETAILS
ビューに記録されます。 - JSON検索索引参照表
ローカル表は、標準のサフィクスINDEX_NAME$TXTIDX
を使用してデータベース内に作成されます。 この表は、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX
の実行時に内部的に作成されます。 - JSON検索インデックス参照ビュー
INDEX_NAME
という名前のビューは、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX
を実行してJSON索引を作成すると作成されます。 - エラー・ログ表
オブジェクト・ストレージに格納されたJSONファイルにJSON検索索引を作成すると、エラー・ログ表index_name$txtidx_err
が作成されます。
親トピック: 全文検索問合せ
オブジェクト・ストレージのドキュメントでの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 Databaseは、JSONドキュメントを含む様々なテキスト・ファイルに対するJSON検索索引の作成をサポートしています。 たとえば、JSONファイルを圧縮形式と非圧縮形式の両方で索引付けしたり、別のJSONドキュメント・デリミタを選択できます。 ファイル処理オプションの詳細は、「DBMS_CLOUDパッケージ」を参照してください。
詳細については、「Oracle Textを使用した索引付け」を参照してください。
ファイル内のJSONドキュメントに対するJSON検索索引の作成
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX
を使用して、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を作成します。
Oracle Textのストップ・ワードの詳細は、「Oracle Textを使用した索引付け」を参照してください。
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検索索引参照表が作成されます。
-
object_name
: 検索されたテキスト文字列を含むオブジェクト・ストレージのファイル名です。 -
object_path
: オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURIです。 -
length
: JSONドキュメントの長さです。 -
offset
: 、ファイルの先頭のバイト・オフセットです。 -
mtime
: オブジェクト・ストレージ・ファイルの最終変更タイムスタンプです。 これは、ファイルがDBMS_CLOUD
によって最後にアクセスされた時間です。
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 |
|
MTIME |
オブジェクト・ストレージ・ファイルの最終変更タイムスタンプ。 ファイルが最後に |
エラー・ログ表
index_name$txtidx_err
が作成されます。
表には、ファイル内の無効な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 |
オブジェクト・ストアにあるファイルの行番号。 |