URL
/update/$table_name/actions/bulk
$table_name は インスタンス ID_テーブル名 です。例えば、インスタンス ID が ha-843qfng6ydhb でテーブル名が test の場合、table_name は ha-843qfng6ydhb_test となります。
上記の URL では、リクエストヘッダーパラメーターやエンコーディングなどの要素が省略されています。
上記の URL では、アプリケーションにアクセスするためのホストアドレスが省略されています。
対応フォーマット
JSON
HTTP リクエストメソッド
POST
ヘッダーパラメーター
パラメーター | タイプ | 説明 |
authorization | 文字列 | 署名 |
X-Opensearch-Swift-PK-Field | 文字列 | プッシュするインデックステーブルのプライマリキーです。例:id |
host | 文字列 | リクエストホストです。[インスタンスの詳細] > [API エンドポイント] > [API ドメイン] で確認できます。例:ha-cn-**********.ha.aliyuncs.com |
署名メカニズム
次の方法で署名 (authorization) を計算できます
パラメーター | タイプ | 説明 |
accessUserName | 文字列 | ユーザー名です。[インスタンスの詳細] ページ > [ネットワーク情報] で確認できます。 |
accessPassWord | 文字列 | パスワードです。[インスタンスの詳細] ページ > [ネットワーク情報] で変更できます。 |
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==ドキュメントのデータフォーマット (body)
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]cmd:必須です。ドキュメントに対する操作を定義します。指定できる値は "add" または "delete" です。ネットワークのやり取りと処理効率を向上させるため、1 回のリクエストで一括更新することを推奨します。"add" はドキュメントの追加を示します。同じプライマリキーを持つドキュメントがすでに存在する場合は、最初に "delete" を実行し、その後に "add" を実行します。"delete" はドキュメントの削除を示します。対応するプライマリキーを持つドキュメントがすでに存在しない場合でも、削除は成功したものと見なされます。
fields:必須です。操作対象のドキュメントの内容です。システム内のすべての操作はプライマリキーに基づいて実行されるため、プライマリキー列は必須です。"delete" の場合は、ドキュメントのプライマリキーのみを指定すればかまいません。
配列型の場合は、JsonArray を使用します。例: [{"fields": { "id": "0","int_array": [14,85],"string_array": ["abc","xyz"]},"cmd": "add"}]。
注:最外層は JsonArray 型で、複数のドキュメントに対する一括操作をサポートします。
例
リクエスト: (ここでは、リクエストヘッダーパラメーターやエンコーディングなどの要素を省略しています。)
http://ha-cn-**********.ha.aliyuncs.com/update/$table_name/actions/bulk
// アップロードする以下のデータは、body に配置する必要があります
[{
"cmd": "add",
"fields": {
"id": "1",
"name": "Test Data Push"
}
}]成功の応答
戻り値にパラメーターが含まれない場合は、プッシュが成功したことを示します。
エラー応答
[
{
"code": 3012,
"message": "Resource not found."
}
]注意事項
API または SDK を使用してデータをプッシュする場合、アプリケーションの列名は大文字と小文字を区別しません。
API または SDK を使用してデータをプッシュする場合、件数とサイズには制限があります。制限はアプリケーションによって異なります。詳細については、「システムの制限」をご参照ください。
データのアップロード後は、必ず戻り値を確認し、該当するエラーコード (特にエラー 3007) が返された場合は、処理をリトライしてください。そうしないと、データ損失が発生する可能性があります。また、データ処理は非同期です。"OK" が返されても、システムがデータの受信に成功したことを示すのみです。データ処理中のエラーはコンソールのエラーメッセージに表示されるため、速やかに確認してください。
POST データにはサイズ制限があります。アップロードするドキュメントの総量が大きすぎる (エンコーディング前で 2 MB) 場合、サーバーはリクエストを受け付けず、例外を返します。