La API masiva permite agregar, actualizar o eliminar varios documentos en una sola solicitud. Agrupar las operaciones reduce los viajes de ida y vuelta y mejora el rendimiento; por lo tanto, se recomienda enviar múltiples operaciones juntas siempre que sea posible.
Requisitos previos
Antes de empezar, asegúrese de contar con:
Una aplicación de OpenSearch
Credenciales para firmar las solicitudes de la API. Para obtener más información sobre la firma, consulte Método de firma de la API V3 de OpenSearch
Carga de documentos
Endpoint
POST /v3/openapi/apps/<app_name>/<table_name>/actions/bulk
|
Marcador de posición |
Descripción |
|
|
Nombre de su aplicación |
|
|
Nombre de la tabla que recibe los datos |
El endpoint omite el host, los encabezados de la solicitud y los detalles de codificación. Para consultar el formato completo de la solicitud, revise Método de firma de la API V3 de OpenSearch.
Formato de solicitud: JSON
Método HTTP: POST
Cuerpo de la solicitud
El cuerpo de la solicitud es un arreglo JSON. Cada elemento representa una operación de documento y contiene los siguientes campos.
cmd (obligatorio)
Indica la operación por ejecutar. Valores válidos: add, update, delete.
La operaciónupdateno es compatible con aplicaciones estándar. Utiliceadden su lugar.
add
Crea un documento. Si ya existe un documento con la misma clave principal, OpenSearch elimina el original antes de crear el nuevo.
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
}
update
Actualiza los campos especificados en un documento existente. Solo se modifican los campos que se incluyen en la solicitud.
{
"cmd": "update",
"fields": {
"id": "2",
"title": "This is the new title"
}
}
delete
Elimina el documento con la clave principal especificada. Si no existe ningún documento con dicha clave principal, la operación de eliminación se ejecuta de todos modos.
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
fields (obligatorio)
Son los campos del documento sobre los que se realizará la operación. Incluya siempre el campo de clave principal, ya que OpenSearch lo utiliza para identificar el documento.
Para una operación de delete, solo es obligatorio el campo de clave principal.
En los campos de tipo ARRAY, especifique el valor como un arreglo JSON:
[
{
"cmd": "add",
"fields": {
"id": "0",
"int_array": [14, 85],
"string_array": ["abc", "xyz"]
}
}
]
timestamp (opcional, solo para aplicaciones avanzadas)
Representa la hora en que se realizó la operación, expresada en milisegundos. OpenSearch usa este valor para determinar el orden de las operaciones sobre la misma clave principal.
Si se omite, OpenSearch utiliza la hora en que recibe la solicitud.
Las aplicaciones estándar no admiten el parámetrotimestamp. Si lo incluye en una solicitud dirigida a una aplicación estándar, OpenSearch devolverá el código de error4007.
Ejemplo de solicitud
A continuación se muestra un ejemplo que agrupa tres operaciones (agregar, actualizar y eliminar) en una sola solicitud. Todos los ejemplos utilizan el formato de arreglo JSON en el nivel más externo.
POST http://<host>/v3/openapi/apps/app_schema_demo/tab/actions/bulk
Cuerpo de la solicitud:
[
{
"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"
}
}
]
Respuesta
Compruebe primero el campo status. Si el valor de status es FAIL, revise errors para obtener más detalles.
|
Parámetro |
Tipo |
Descripción |
|
|
STRING |
|
|
|
STRING |
|
|
|
STRING |
ID único de la solicitud para fines de solución de problemas |
|
|
STRING |
Detalles del error. Cada error incluye: |
Respuesta exitosa
{
"errors": [],
"request_id": "150116724719940316170289",
"status": "OK",
"result": true
}
Respuesta de error
{
"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"
}
Notas de uso
Compruebe el valor devuelto después de cada solicitud. Un valor
statusigual aOKindica que OpenSearch recibió los datos, pero no garantiza que se hayan procesado correctamente. El procesamiento de datos en OpenSearch es asíncrono. Si ocurre un error durante el procesamiento, el mensaje correspondiente aparecerá en la consola de OpenSearch. Revise la consola periódicamente y preste especial atención al código de error3007.Límite de tamaño de la solicitud: El cuerpo de la solicitud no debe exceder los 2 MB antes de la codificación. Las solicitudes que superen este límite serán rechazadas. Puede insertar datos un número limitado de veces y con un tamaño restringido mediante llamadas a la API o a través del SDK de OpenSearch. Para conocer los límites de frecuencia y volumen de inserción según el tipo de aplicación, consulte Limits.
Codificación UTF-8 para caracteres chinos: Si el cuerpo de la solicitud contiene caracteres chinos, debe codificarse en UTF-8. Asimismo, el valor del encabezado
Content-MD5debe calcularse a partir del cuerpo codificado en UTF-8.