このトピックでは、ドキュメントのアップロードと削除を開始するために使用されるリクエストの構文について説明します。
URL
/update/$table_name/actions/bulk
$table_name は インスタンス ID_テーブル名 の形式で指定します。たとえば、インスタンス ID が ha-843qfng6ydhb で、テーブル名が test の場合、$table_name を ha-843qfng6ydhb_test に設定します。
サンプル 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 | ユーザー名。ユーザー名は、[インスタンスの詳細] ページの [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);
}
}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": "delete",
"fields": {
"id": "3"
}
}
]cmd: 必須。ドキュメントに対して実行される操作。有効な値: add および delete。一度に複数の操作を実行するリクエストを送信することをお勧めします。これにより、ネットワーク上でのインタラクション効率と処理効率が向上します。add の値は、ドキュメントをアップロードすることを指定します。指定されたプライマリキー値を持つドキュメントが既に存在する場合は、新しいドキュメントがアップロードされる前に元のドキュメントが削除されます。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 はリクエストを拒否し、エラーを返します。