Ajoute et supprime des documents dans une table OpenSearch Vector Search Edition via une seule requête groupée.
Principes de la requête
| Propriété | Valeur |
|---|---|
| Method | POST |
| Format | JSON |
| Endpoint path | /update/$table_name/actions/bulk |
Définissez $table_name sur {instance_id}_{table_name}. Par exemple, si l'ID d'instance est ha-843qfng6ydhb et le nom de la table est test, utilisez ha-843qfng6ydhb_test.
En-têtes de requête
| En-tête | Type | Description |
|---|---|---|
authorization |
String | Signature d'authentification. Format : Basic <Base64-encoded-credentials>. Consultez la section Générer l'en-tête d'autorisation. |
X-Opensearch-Swift-PK-Field |
String | Champ de clé primaire de la table d'index. Exemple : id. |
host |
String | Endpoint de l'instance OpenSearch. Retrouvez-le dans la section API Endpoint de la page Instance Details. Exemple : ha-cn-**********.ha.aliyuncs.com. |
Générer l'en-tête d'autorisation
La valeur de l'en-tête authorization correspond à la chaîne username:password encodée en Base64.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
accessUserName |
String | Nom d'utilisateur. Retrouvez-le dans la section API Endpoint de la page Instance Details. |
accessPassWord |
String | Mot de passe. Modifiez-le dans la section API Endpoint de la page Instance Details. |
Générer la valeur
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);
}
}
Le code génère une chaîne encodée en Base64, telle que cm9vdDp******mdhbA==.
Ajoutez le préfixe Basic lors de la définition de l'en-tête dans votre requête HTTP :
authorization: Basic cm9vdDp******mdhbA==
Corps de la requête
Le corps de la requête est un tableau JSON. Chaque élément représente une opération sur un document.
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]
Champs
| Champ | Obligatoire | Description |
|---|---|---|
cmd |
Oui | Opération à exécuter. Valeurs valides : add, delete. Regroupez plusieurs opérations dans une seule requête pour améliorer l'efficacité réseau et le traitement. |
fields |
Oui | Champs du document concerné par l'opération. Doit inclure le champ de clé primaire : OpenSearch identifie chaque document par sa valeur de clé primaire. |
Comportement de cmd
| Valeur | Comportement |
|---|---|
add |
Ajoute le document. Si un document avec la même clé primaire existe déjà, l'original est supprimé avant l'écriture du nouveau document. |
delete |
Supprime le document correspondant à la clé primaire spécifiée. L'opération aboutit même si aucun document correspondant n'existe. |
Champs de type ARRAY
Spécifiez les champs de type ARRAY sous forme de tableaux JSON :
[{"cmd": "add", "fields": {"id": "0", "int_array": [14, 85], "string_array": ["abc", "xyz"]}}]
Exemple de requête
POST http://ha-cn-**********.ha.aliyuncs.com/update/$table_name/actions/bulk
Corps de la requête :
[{
"cmd": "add",
"fields": {
"id": 1,
"name": "Test Data Push"
}
}]
Réponses
Succès
Aucun corps de réponse n'est renvoyé en cas de succès.
Erreur
[
{
"code": 3012,
"message": "Resource not found."
}
]
Notes d'utilisation
Les noms de champs ne sont pas sensibles à la casse lors de l'envoi de données via l'API ou le SDK OpenSearch.
La fréquence d'envoi et les limites de taille des données varient selon l'application. Consultez la documentation relative aux limites pour votre type d'application.
Après avoir envoyé des données, vérifiez la présence de codes d'erreur dans la réponse. Le code d'erreur
3007nécessite un dépannage immédiat : des erreurs de données non résolues peuvent entraîner une perte de données. OpenSearch traite les données de manière asynchrone : une réponse positive signifie que les données ont été reçues, mais pas que le traitement est terminé. Surveillez les erreurs de traitement dans la console OpenSearch.La taille maximale du corps de la requête avant encodage est de 2 Mo. Les requêtes dépassant cette limite sont rejetées.