Carga y elimina documentos en una tabla de OpenSearch Vector Search Edition mediante una única solicitud masiva.
Conceptos básicos de la solicitud
|
Propiedad |
Valor |
|
Method |
POST |
|
Format |
JSON |
|
Endpoint path |
|
Establezca $table_name como {instance_id}_{table_name}. Por ejemplo, si el ID de la instancia es ha-843qfng6ydhb y el nombre de la tabla es test, use ha-843qfng6ydhb_test.
Encabezados de solicitud
|
Encabezado |
Tipo |
Descripción |
|
|
String |
Firma de autenticación. Formato: |
|
|
String |
Campo de clave principal de la tabla de índices. Ejemplo: |
|
|
String |
Endpoint de la instancia de OpenSearch. Puede encontrarlo en la sección API Endpoint de la página Instance Details. Ejemplo: |
Generación del encabezado de autorización
El valor del encabezado authorization es una cadena codificada en Base64 con el formato username:password.
Parámetros
|
Parámetro |
Tipo |
Descripción |
|
|
String |
Nombre de usuario. Puede encontrarlo en la sección API Endpoint de la página Instance Details. |
|
|
String |
Contraseña. Puede modificarla en la sección API Endpoint de la página Instance Details. |
Generación del valor
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);
}
}
El código genera una cadena codificada en Base64 como cm9vdDp******mdhbA==.
Agregue el prefijo Basic al configurar el encabezado en su solicitud HTTP:
authorization: Basic cm9vdDp******mdhbA==
Cuerpo de la solicitud
El cuerpo de la solicitud es un arreglo JSON. Cada elemento representa una operación sobre un documento.
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]
Campos
|
Campo |
Obligatorio |
Descripción |
|
|
Sí |
Operación por ejecutar. Valores válidos: |
|
|
Sí |
Campos del documento sobre los que se aplicará la operación. Deben incluir el campo de clave principal, ya que OpenSearch identifica cada documento por este valor. |
Comportamiento de cmd
|
Valor |
Comportamiento |
|
|
Carga el documento. Si ya existe un documento con la misma clave principal, se elimina el original antes de escribir el nuevo. |
|
|
Elimina el documento con la clave principal especificada. Si no existe ningún documento coincidente, la operación se completa correctamente. |
Campos de tipo ARRAY
Especifique los campos de tipo ARRAY como arreglos JSON:
[{"cmd": "add", "fields": {"id": "0", "int_array": [14, 85], "string_array": ["abc", "xyz"]}}]
Ejemplo de solicitud
POST http://ha-cn-**********.ha.aliyuncs.com/update/$table_name/actions/bulk
Cuerpo de la solicitud:
[{
"cmd": "add",
"fields": {
"id": 1,
"name": "Test Data Push"
}
}]
Respuestas
Éxito
No se devuelve ningún cuerpo de respuesta cuando la operación es exitosa.
Error
[
{
"code": 3012,
"message": "Resource not found."
}
]
Notas de uso
Los nombres de los campos no distinguen entre mayúsculas y minúsculas al enviar datos mediante la API o el SDK de OpenSearch.
Los límites de frecuencia de envío y tamaño de los datos varían según la aplicación. Consulte la documentación de límites correspondiente a su tipo de aplicación.
Después de enviar los datos, revise la respuesta en busca de códigos de error. El código de error
3007requiere solución inmediata de problemas, ya que los errores de datos sin resolver pueden provocar pérdida de información. OpenSearch procesa los datos de forma asíncrona: una respuesta exitosa indica que se recibieron los datos, no que haya finalizado el procesamiento. Supervise la consola de OpenSearch para detectar errores de procesamiento.El tamaño máximo del cuerpo de la solicitud antes de la codificación es de 2 MB. Las solicitudes que superen este límite se rechazarán.