このトピックでは、テーブルを追加する際にオブジェクトストレージサービス(OSS)+ APIをデータソースとして使用する方法について説明します。
OSS + APIデータソースを追加するには、次の2つの手順を実行します。
インスタンスが配置されているリージョンでOSSを有効化します。
設定については、OSSデータソースの追加の手順に従ってください。
OSSの有効化
- 説明
OSSサービスが、購入したOpenSearchサービスと同じリージョンで有効化されていることを確認してください。
OSSの有効化中に、opensearch:opensearchタグを追加する必要があります。
Retrieval Engine Editionは、リージョン属性のないOSSバケットをサポートしていません。
OSSデータソースを追加すると、AliyunServiceRoleForSearchEngineという名前のサービスリンクロールが存在しない場合、システムによって自動的に作成されます。OpenSearchはこのロールを使用して、他のサービスのリソースにアクセスし、関連機能を実装します。
バケットにopensearch:opensearchタグを追加します。
OSSデータソースの追加
インスタンスの詳細 > テーブル管理を選択します。表示されるページで、テーブルの追加をクリックします。
テーブル管理ページで、テーブル名、シャード数、データ更新リソース数などの基本情報を設定します。
パラメーター:
テーブル名: カスタム名を指定します。
データシャード数: 256以下の正の整数を入力します。整数は、インスタンスデータノード数の3倍以下にする必要があります。
データ更新リソース数: データ更新に割り当てられるリソースの数。デフォルトでは、インデックスごとに4 vCPUと8 GiBのメモリを持つ2つの無料の更新リソースが提供されます。無料枠を超えるデータ更新リソースについては課金されます。詳細については、Retrieval Engineバージョン国際サイト課金ドキュメントを参照してください。
データ同期のためにデータソースを設定します。検証が完了したら、次へをクリックします。
ディレクトリ名にはopensearchを含めるか、opensearch:opensearchタグを付ける必要があります。そうでない場合、データを読み取ることができません。名前に疑問符(?)、等号(=)、アンパサンド(&)などの特殊文字を含めることはできません。
OSSパスソース: 作成したバケットにアクセスした後、新しいディレクトリを作成し、そのパスを選択します。この例では、パス/opensearch_index_data/が使用されています。
バケット: OSSバケットの名前。名前は、OSSコンソールの[バケット]ページに表示される名前と同じです。
フィールドを設定します。設定が完了したら、[次へ]をクリックします。
この例では、pkとnamespaceの2つのフィールドが設定されています。サンプルデータの詳細については、oss_test.txtを参照してください。
CMD=add
pk=999000
namespace=0.00.0039257140.0098142860.0039257140.00
pk=999000
namespace=0.00.0039257140OSS内のオブジェクトの内容の詳細については、オブジェクト形式セクションを参照してください。
インデックススキーマを設定します。完了したら、[次へ]をクリックします。
[作成の確認]をクリックします。その後、システムによって設定されたテーブルが自動的に生成されます。
変更履歴でテーブルの作成の進捗状況を確認します。
テーブルが使用可能になったら、クエリテストページでクエリテストを実施します。
オブジェクト形式
オブジェクトは、インデックス作成のデータソースとして機能します。オブジェクトはUTF-8形式でエンコードする必要があります。現在、HA3形式とJSON形式がサポートされています。
HA3形式
次のコードは、standard_sample.dataという名前の完全なデータファイルの内容を示しています。
// 2つのコマンドが含まれています:addとdelete。各コマンドは複数の行で構成され、各行はキーと値のペアを表します。
// コマンドは「^^\n」で区切られ、キーと値のペアは「^_\n」で区切られ、複数の値は「^]」で区切られます。
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^_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^_上記のデータファイルには、addコマンドとdeleteコマンドの2つのコマンドが含まれています。各コマンドは複数の行で構成され、各行はキーと値のペアを表します。コマンドは「^^\n」で区切られ、キーと値のペアは「^_\n」で区切られ、複数の値は「^]」で区切られます。次の表は、区切り文字について説明しています。
区切り文字
C++エンコーディング | ASCII 16進数 | 説明 | (emacs/vi)での表示形式 | emacsでの入力方法 | viでの入力方法 |
"\x1F\n" | 1F0A | キーと値の区切り文字 | ^_ (改行が続く) | C-q C-7 | C-v C-7 |
"\x1E\n" | 1E0A | コマンドの区切り文字 | ^^ (改行が続く) | C-q C-6 | C-v C-6 |
"\x1D" | 1D | 複数値の区切り文字 | ^] | C-q C-5 | C-v C-5 |
"\x1C" | 1C | セクションウェイトフラグ | ^\ | C-q C-4 | C-v C-4 |
"\x1D" | 1D | セクションの区切り文字 | ^] | C-q C-5 | C-v C-5 |
"\x03" | 03 | サブドキュメントフィールドの区切り文字 | ^C | C-q C-c | C-v C-c |
コマンド形式
addコマンドの形式: addコマンドは、インデックスに新しいコンテンツを挿入するために使用されます。addコマンドの最初の行はCMD=addである必要があり、その後にフィールドが続きます。フィールドの順序はスキーマと一致する必要があり、存在するすべてのフィールドはスキーマで宣言する必要があります。
// 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=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^_
^^deleteコマンドの形式: deleteコマンドは、インデックスから指定されたコンテンツを削除するために使用されます。deleteコマンドの最初の行はCMD=deleteである必要があり、その後にインデックススキーマで定義されたプライマリキーフィールドとパーティションハッシュに使用されるフィールドが続きます。これらの2つのフィールドが同じ場合は、1つだけリストする必要があります。
// deleteコマンドは、インデックスから指定されたコンテンツを削除するために使用されます。
CMD=delete^_
PK=12345321^_
^^CMD=delete^_
PK=12345321^_
^^JSON形式
次のコードは、複数のレコードを含む例を示しています。ここで、「\n」は改行を示します。単一のレコードには改行を含めないでください。サンプルコード:
// 複数のレコードの例。'\n'は改行を示します。単一のレコードに改行を含めないでください。
{"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"]}]}