単一のバルクリクエストを使用して、OpenSearch Vector Search Edition テーブル内のドキュメントをアップロードおよび削除します。
リクエストの基本
| プロパティ | 値 |
|---|---|
| メソッド | POST |
| 形式 | JSON |
| エンドポイントパス | /update/$table_name/actions/bulk |
$table_name を {instance_id}_{table_name} に設定します。例えば、インスタンス ID が ha-843qfng6ydhb でテーブル名が test の場合、ha-843qfng6ydhb_test を使用します。
リクエストヘッダー
| ヘッダー | タイプ | 説明 |
|---|---|---|
authorization | String | 認証署名。形式: Basic <Base64-encoded-credentials>。詳細については、「認証ヘッダーの生成」をご参照ください。 |
X-Opensearch-Swift-PK-Field | String | インデックステーブルのプライマリキーフィールド。例: id。 |
host | String | OpenSearch インスタンスのエンドポイントです。[API エンドポイント] セクションの [インスタンスの詳細] ページで確認できます。例: ha-cn-**********.ha.aliyuncs.com。 |
認証ヘッダーの生成
authorization ヘッダーの値は、username:password の Base64エンコードされた文字列です。
パラメーター
| パラメーター | タイプ | 説明 |
|---|---|---|
accessUserName | String | ユーザー名です。[インスタンスの詳細] ページの [API エンドポイント] セクションで確認できます。 |
accessPassWord | String | パスワードです。[インスタンスの詳細] ページの [API エンドポイント] セクションでパスワードを変更できます。 |
値の生成
import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;
public class GenerateAuthorization {
public static void main(String[] args) throws Exception {
String accessUserName = "username";
String accessPassWord = "password";
String realmStr = "" + accessUserName + ":" + accessPassWord + "";
String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
System.out.println(authorization);
}
}このコードは、cm9vdDp******mdhbA== のような Base64エンコードされた文字列を出力します。
HTTP リクエストでヘッダーを設定する際に、Basic プレフィックスを追加します。
authorization: Basic cm9vdDp******mdhbA==リクエストボディ
リクエストボディは JSON 配列です。各要素は 1 つのドキュメント操作を表します。
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
cmd | Yes | 実行する操作。有効な値: add、delete。ネットワークと処理の効率を向上させるために、単一のリクエストで複数の操作を一括処理します。 |
fields | Yes | 操作するドキュメントフィールド。プライマリキーフィールドを含める必要があります。OpenSearch は各ドキュメントをプライマリキー値で識別します。 |
`cmd` の動作
| 値 | 動作 |
|---|---|
add | ドキュメントをアップロードします。同じプライマリキーを持つドキュメントが既に存在する場合、新しいドキュメントが書き込まれる前に元のドキュメントは削除されます。 |
delete | 指定されたプライマリキーを持つドキュメントを削除します。一致するドキュメントが存在しない場合でも、操作は成功します。 |
ARRAY 型フィールド
ARRAY 型フィールドは JSON 配列として指定します。
[{"cmd": "add", "fields": {"id": "0", "int_array": [14, 85], "string_array": ["abc", "xyz"]}}]リクエスト例
POST http://ha-cn-**********.ha.aliyuncs.com/update/$table_name/actions/bulkリクエストボディ:
[{
"cmd": "add",
"fields": {
"id": 1,
"name": "Test Data Push"
}
}]レスポンス
成功
成功時にはレスポンスボディは返されません。
エラー
[
{
"code": 3012,
"message": "Resource not found."
}
]注意事項
API または OpenSearch SDK を介してデータをプッシュする場合、フィールド名は大文字と小文字を区別しません。
プッシュ頻度とデータサイズ制限は、アプリケーションによって異なります。ご利用のアプリケーションタイプに関する制限事項ドキュメントをご参照ください。
データをプッシュした後、レスポンスでエラーコードを確認してください。エラーコード
3007は即座なトラブルシューティングが必要です。未解決のデータエラーはデータ損失を引き起こす可能性があります。OpenSearch はデータを非同期に処理します。成功したレスポンスはデータが受信されたことを意味し、処理が完了したことを意味するものではありません。処理エラーについては OpenSearch コンソールを監視してください。エンコード前の最大リクエストボディサイズは 2 MB です。この制限を超えるリクエストは拒否されます。