必要に応じて、APIオペレーションを呼び出して、1つ以上のドキュメントを作成、更新、および削除できます。
URL
/update/$table_name/actions/bulk
$table_name はデータソースの名前を指定します。
サンプルURLには、リクエストヘッダーやエンコード方式などの情報は含まれていません。
サンプルURLには、OpenSearchへの接続に使用するエンドポイントも含まれていません。
サポートされている形式
JSON
HTTPリクエストメソッド
POST
ヘッダー
ヘッダー | タイプ | 説明 |
authorization | string | 認証署名。 |
X-Opensearch-Swift-PK-Field | string | インデックステーブルのプライマリキーフィールド。例: id。 |
host | string | リクエストの送信先ホストのエンドポイント。ホストのエンドポイントは、OpenSearchコンソールの[インスタンスの詳細]ページの[APIエンドポイント]タブで確認できます。例: ha-cn-**********.ha.aliyuncs.com。 |
リクエスト署名
次の方法を使用して、リクエスト署名を計算できます。リクエスト署名はauthorizationヘッダーに格納されます。
パラメーター | タイプ | 説明 |
accessUserName | string | ユーザー名。ユーザー名は、[インスタンスの詳細]ページの[ネットワーク情報]タブで確認できます。 |
accessPassWord | string | パスワード。パスワードは、[インスタンスの詳細]ページの[ネットワーク情報]タブで変更できます。 |
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);
}
}authorizationヘッダーの有効な値の形式:
cm9vdDp******mdhbA==注: HTTPリクエストでauthorizationヘッダーを指定する場合は、Basicプレフィックスを追加する必要があります。
例:
authorization: Basic cm9vdDp******mdhbA==ドキュメント処理のリクエストボディ
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title", // これはタイトルです
"body": "This is the body" // これは本文です
}
},
{
"cmd": "update",
"fields": {
"id": "2",
"title": "This is the new title" // これは新しいタイトルです
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]cmd: 必須。ドキュメントに対して実行する操作。有効な値: add、update、およびdelete。update値は、標準アプリケーションではサポートされていません。一度に複数の操作を実行するリクエストを送信することをお勧めします。これにより、ネットワーク上でのインタラクション効率と処理効率が向上します。add値は、ドキュメントを作成することを指定します。指定されたプライマリキー値を持つドキュメントが既に存在する場合は、新しいドキュメントが作成される前に元のドキュメントが削除されます。update値は、ドキュメント内の指定されたフィールドを更新することを指定します。delete値は、ドキュメントを削除することを指定します。指定されたプライマリキー値を持つドキュメントが存在しない場合は、ドキュメントは削除されます。
fields: 必須。ドキュメント内で操作を実行するフィールド。プライマリキーフィールドを指定する必要があります。OpenSearchは、プライマリキー値に基づいてドキュメントを識別します。ドキュメントを削除する場合は、ドキュメントのプライマリキーフィールドのみを指定する必要があります。
ARRAYタイプのフィールドを指定するには、JSON配列の形式で指定する必要があります。例: [{"fields": { "id": "0","int_array": [14,85],"string_array": ["abc","xyz"]},"cmd": "add"}]。
サンプルコードでは、最外層は一度に複数のドキュメントを管理するために使用されるJSON配列です。
例
データ処理のサンプルAPIリクエスト。リクエストヘッダーやエンコード方式などの情報は省略されています。
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を使用してデータをプッシュする場合、アプリケーションのフィールド名は大文字と小文字が区別されません。
APIオペレーションを呼び出すか、OpenSearch SDKを使用して、限られた回数とサイズでデータをプッシュできます。アプリケーションごとに異なる制限が課せられます。詳細については、制限の関連トピックを参照してください。
データのアップロード後、戻り値を確認してください。エラーコード、特に3007が返された場合は、エラーコードに基づいてエラーをトラブルシューティングし、再試行してください。そうしないと、データが失われる可能性があります。OpenSearchはデータを非同期的に処理します。戻り値OKは、OpenSearchがデータを受信したことを示します。これは、データが正しく処理されたことを示すものではありません。データ処理中にエラーが発生した場合、関連するエラーメッセージがOpenSearchコンソールに表示されます。できるだけ早くエラーメッセージを確認してください。
HTTP POSTリクエストを送信するときにアップロードできるデータのサイズは制限されています。エンコード前のデータサイズが2 MBを超える場合、OpenSearchはリクエストを拒否し、エラーを返します。