Object Storage Service (OSS) を OpenSearch Retrieval Engine Edition テーブルのフルデータソースとして設定します。この設定により、OSS バケットから一括データを検索インデックスにロードし、API 経由で最新の状態に保ちます。
処理は次の 2 つのフェーズで構成されます。
OSS の準備 — サービスを有効化し、バケットを作成してデータオブジェクトをアップロードし、必要なタグを適用します。
OpenSearch コンソールでテーブルを設定します。
前提条件
開始する前に、以下の要件を満たしていることを確認してください。
OSS の有効化および OpenSearch インスタンスの作成権限を持つ Alibaba Cloud アカウント
対象リージョンにすでに作成済みの OpenSearch Retrieval Engine Edition インスタンス
制限事項
| 制限事項 | 詳細 |
|---|---|
| リージョンの一致 | OSS は、ご利用の OpenSearch インスタンスと同じリージョンで有効化されている必要があります。 |
| バケットタイプ | リージョン属性を持たない OSS バケットはサポートされていません。 |
| ディレクトリのタグ付け | OSS ディレクトリ名に opensearch を含めるか、opensearch:opensearch タグを付与する必要があります。 |
| パス文字 | OSS パスには ?、=、または & |
| オブジェクトの配置 | オブジェクトはバケットのルートではなく、ディレクトリ内に配置する必要があります。 |
OSS の準備
OSS の有効化とバケットの作成
OSS のアクティベーション をお使いの OpenSearch インスタンスと同じリージョンで行ってください。
データオブジェクトをバケットにアップロードする。オブジェクトはディレクトリ内に配置する必要があります — バケットのルート内には配置できません。
バケットに
opensearch:opensearchタグを追加します。ディレクトリ名にopensearchが含まれていない場合、このタグは必須です。タグがないと、OpenSearch はオブジェクトを読み取れません。
OpenSearch コンソールで OSS データソースを追加すると、システムは自動的に AliyunServiceRoleForSearchEngine という名前のサービスリンクロールを作成します(該当ロールが存在しない場合)。OpenSearch はこのロールを偽装して、ご利用の OSS リソースにアクセスします。OSS + API データソースの追加
ステップ 1:テーブルの基本設定
OpenSearch コンソールで、インスタンスの詳細 > テーブル管理 に移動し、[テーブルの追加] をクリックします。
次のパラメーターを設定します。
パラメーター 説明 [テーブル名] テーブルのカスタム名 [データシャード数] 256 以下の正の整数。この値は、インスタンスのデータノード数の 3 倍以下にしてください。 [データ更新リソース数] データ更新に割り当てられるリソースの数。各インデックスには、2 つの無料更新リソース (4 vCPU、8 GiB メモリ) が含まれます。無料クォータを超えるリソースは課金されます。課金の詳細については、課金の詳細をご参照ください。
ステップ 2:データソースの設定
データソースの設定 で、次のフィールドを設定します。
OSS パス のディレクトリ名には
opensearchを含める(例:/opensearch_index_data/)か、opensearch:opensearchタグを付与する必要があります。いずれも満たさない場合、システムはオブジェクトを読み取れません。フィールド 値 / 要件 フルデータソース Object Storage Service (OSS) + API OSS パス データオブジェクトを含むディレクトリへのパス。先頭は /で始まる必要があります。?、=、または&を含めることはできません。例:/opensearch_index_data/OSS バケット OSS コンソールの バケット ページに表示されるバケット名 データ形式 HA3 または JSON データソースの検証 が完了したら、[次へ] をクリックします。
ステップ 3:フィールドとスキーマの設定
フィールドを設定して、[次へ] をクリックします。次のサンプルでは、2つのフィールド —
pkおよびnamespace— を示しています。完全なデータ形式を確認するには、完全なサンプルファイル (oss_test.txt) をダウンロードしてください。CMD=add pk=999000 namespace=0.00.0039257140.0098142860.0039257140.00 pk=999000 namespace=0.00.0039257140オブジェクト形式の詳細については、「オブジェクト形式リファレンス」をご参照ください。
インデックススキーマを設定し、[次へ] をクリックします。
ステップ 4:テーブルの作成と検証
[作成の確認] をクリックします。システムが自動的にテーブルを生成します。
変更履歴 で作成の進捗を確認します。
テーブルのステータスが 利用可能 に変わったら、クエリテストページでクエリを実行し、データが正しくインデックスされていることを確認します。
オブジェクト形式リファレンス
オブジェクトは UTF-8 エンコーディングである必要があります。サポートされる形式は HA3 と JSON の 2 種類です。
HA3 形式
HA3 は行指向の形式です。各ドキュメントは、ASCII 制御文字で区切られたキーと値のペアのセットで構成されます。
デリミタ
| C++ エンコーディング | ASCII 16 進数 | 説明 | 表示形式 |
|---|---|---|---|
\x1F\n | 1F0A | キーと値のデリミタ | ^_(改行付き) |
\x1E\n | 1E0A | コマンドデリミタ | ^^(改行付き) |
\x1D | 1D | 複数値デリミタ | ^] |
\x1C | 1C | セクション重みフラグ | ^\ |
\x1D | 1D | セクションデリミタ | ^] |
\x03 | 03 | サブドキュメントフィールドデリミタ | ^C |
追加コマンド
ドキュメントを挿入するには、CMD=add を使用します。最初の行は必ず CMD=add で始まり、その後にフィールドのキーと値のペアを記述します。フィールドの順序はスキーマと一致し、すべてのフィールドがスキーマで宣言されている必要があります。
CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=Alibaba Cloud Computing Co., Ltd.^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^削除コマンド
ドキュメントを削除するには、CMD=delete を使用します。最初の行は必ず CMD=delete で始まり、その後にプライマリキーフィールドを記述します。プライマリキーとパーティションハッシュ化フィールドが異なる場合は両方を含め、同じ場合は一方のみを含めてください。
CMD=delete^_
PK=12345321^_
^^完全なデータファイルの例
1 つのデータファイルに複数のコマンドを含めることができます。
CMD=add^_
PK=12345321^_
url=http://www.aliyun.com/index.html^_
title=Alibaba Cloud Computing Co., Ltd.^_
body=xxxxxx xxx^_
time=3123423421^_
multi_value_field=1234^]324^]342^_
bidwords=mp3^\price=35.8^Ptime=13867236221^]mp4^\price=32.8^Ptime=13867236221^_
^^
CMD=delete^_
PK=12345321^_
^^JSON 形式
ファイル内の各行は単一の JSON レコードです。レコード内に改行を含めることはできません。複数のレコードはそれぞれ別の行に記述します。
{"field_double": ["100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300"], "title": "Huawei Mate 9 Kirin 960 chip Leica dual lens", "color": "Red", "empty_int32": "", "price": "3599", "CMD": "add", "nid": "1", "gather_cn_str": "", "desc": ["str1", "str2", "str3"], "brand": "Huawei", "size": "5.9","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}
{"field_double": ["100.0", "221.123", "500.3333333", "100.0", "221.123", "500.3333333"], "field_int32": ["100", "200", "300", "100", "200", "300"], "title": "Huawei/Huawei P10 Plus all-network phone", "color": "Blue", "empty_int32": "", "price": "4388", "CMD": "add", "nid": "2", "gather_cn_str": "color Blue", "desc": ["str1", "str2", "str3", "str1", "str2", "str3"], "brand": "Huawei", "size": "5.5","__subdocs__":[{"sub_pk":"100","sub_field1":"200","sub_field2":["100","200","300"]},{"sub_pk":"200","sub_field1":"200","sub_field2":["100","200","300"]}]}各レコードには CMD フィールド("add" または "delete")およびドキュメントフィールドが含まれます。複数値フィールドは JSON 配列を使用します。サブドキュメントは __subdocs__ キーの下にオブジェクトの配列として記述します。