ドキュメントのアップロード
ドキュメントは、個別またはバッチで追加、更新、削除できます。
URL
/v3/openapi/apps/$app_name/$table_name/actions/bulk$app_name をご利用のアプリケーション名に置き換えます。
$table_name をアプリケーションのデータ受信テーブルの名前に置き換えます。
このサンプル URL では、リクエストヘッダーとエンコーディング情報は省略されています。
この URL には、アプリケーションのホストアドレスは含まれていません。
サポートされるフォーマット
JSON
HTTP リクエストメソッド
POST
リクエストパラメーター
署名文字列の計算方法とデータプッシュ用のリクエストヘッダーの設定方法については、「V3 API 署名メカニズム」をご参照ください。
ドキュメントデータ形式
注意
Standard Edition アプリケーションは timestamp パラメーターをサポートしていません。このパラメーターを指定すると、エラーコード 4007 が返されます。
次の例は、Premium Edition のデータ形式を示しています。
[
{
"cmd": "add",
"timestamp": 1401342874777,
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "update",
"timestamp": 1401342874778,
"fields": {
"id": "2",
"title": "This is the new title"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]timestamp:任意。ドキュメント操作のタイムスタンプ (ミリ秒単位)。OpenSearch はこの値を使用して、同じプライマリキーを持つドキュメントに対する操作の処理順序を決定します。このパラメーターは、Premium Edition アプリケーションでのみサポートされています。Standard Edition アプリケーションで指定すると、エラーコード 4007 が返されます。指定しない場合、OpenSearch はドキュメントを受信した時刻を使用します。
cmd:必須。ドキュメントに対して実行する操作を指定します。
add:ドキュメントを追加します。同じプライマリキーを持つドキュメントが存在する場合、既存のドキュメントが削除されてから新しいドキュメントが追加されます。
delete:ドキュメントを削除します。指定されたプライマリキーを持つドキュメントが存在しない場合でも、操作は成功したと見なされます。
update:指定されたプライマリキーを持つドキュメントの特定のフィールドを更新します。
upsert:指定されたプライマリキーが存在する場合はドキュメントを更新し、存在しない場合は新しいドキュメントを追加します。
説明Standard Edition アプリケーションは `update` または `upsert` をサポートしていません。
効率を向上させるために、1 つのリクエストで複数の操作をバッチ処理できます。
fields:必須。操作対象のドキュメントフィールド。OpenSearch はプライマリキーフィールドを使用してドキュメントを識別するため、このフィールドは必須です。delete 操作の場合、プライマリキーフィールドのみが必須です。
配列型のフィールドには、
[{"fields": { "id": "0","int_array": [14,85],"string_array": ["abc","xyz"]},"cmd": "ADD"}]のような JSON 配列を使用します。リクエストボディの最外層は JSON 配列であり、1 つのリクエストで複数のドキュメントを管理できます。
戻り値
パラメーター | 型 | 説明 |
errors | ARRAY | エラーの詳細。各エラーオブジェクトには、message (エラーの説明)、params (エラーパラメーター)、および code (エラーコード) が含まれます。詳細については、「エラーコード」をご参照ください。 |
request_id | string | リクエスト ID。トラブルシューティングに使用されます。 |
status | string | リクエスト結果。有効な値:OK (成功) と FAIL (失敗)。値が FAIL の場合は、エラーコードに基づいてトラブルシューティングを行います。 |
result | string | リクエスト結果。リクエストが成功した場合は true を返します。リクエストが失敗した場合は返されません。 |
例
リクエスト例 (ヘッダーとエンコーディングは省略):
http://host/v3/openapi/apps/app_schema_demo/tab/actions/bulk
// アップロードするドキュメント。リクエストボディに配置する必要があります。
[{"cmd":"ADD","fields":{"id":1,"name":"Test Data Push"}}]成功レスポンス
{
"errors": [],
"request_id": "150116724719940316170289",
"status": "OK",
"result": true
}エラーレスポンス
{
"errors": [
{
"code": 2001,
"message": "The application to be managed does not exist. The application to be managed does not exist.",
"params": {
"friendly_message": "The application to be managed does not exist."
}
}
],
"request_id": "150116732819940316116461",
"status": "FAIL"
}注意事項
API または SDK を使用してデータをプッシュする場合、フィールド名では大文字と小文字は区別されません。
データプッシュの頻度とサイズの制限は、アプリケーションのタイプによって異なります。詳細については、「システム制限」をご参照ください。
データのアップロード後は必ず戻り値を確認し、データ損失を防ぐためにエラーコードを速やかにトラブルシューティングしてください。特にエラーコード 3007 に注意してください。OpenSearch はデータを非同期で処理するため、戻り値が OK であっても、データが受信されたことを示すだけで、正常に処理されたことを保証するものではありません。OpenSearch コンソールで定期的に処理エラーを確認してください。
エンコーディング前のリクエストボディの最大サイズは 2 MB です。この制限を超えたリクエストは OpenSearch によって拒否されます。
リクエストボディに中国語文字が含まれている場合は、UTF-8 エンコーディングを使用する必要があります。Content-MD5 ヘッダーの値も、UTF-8 でエンコードされたボディに基づいて計算する必要があります。そうしないと、リクエストは失敗します。