Unggah dan hapus dokumen dalam tabel OpenSearch Vector Search Edition menggunakan satu permintaan bulk.
Dasar permintaan
| Properti | Nilai |
|---|---|
| Method | POST |
| Format | JSON |
| Endpoint path | /update/$table_name/actions/bulk |
Atur $table_name menjadi {instance_id}_{table_name}. Misalnya, jika ID instans adalah ha-843qfng6ydhb dan nama tabel adalah test, gunakan ha-843qfng6ydhb_test.
Header permintaan
| Header | Tipe | Deskripsi |
|---|---|---|
authorization | String | Signature otentikasi. Format: Basic <Base64-encoded-credentials>. Lihat Buat header authorization. |
X-Opensearch-Swift-PK-Field | String | Bidang kunci primary dari tabel indeks. Contoh: id. |
host | String | Titik akhir instans OpenSearch. Temukan di bagian API Endpoint pada halaman Instance Details. Contoh: ha-cn-**********.ha.aliyuncs.com. |
Buat header authorization
Nilai header authorization adalah string Base64 yang diencode dari username:password.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
accessUserName | String | Username. Temukan di bagian API Endpoint pada halaman Instance Details. |
accessPassWord | String | Password. Anda dapat mengubah password di bagian API Endpoint pada halaman Instance Details. |
Buat nilai tersebut
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);
}
}Kode tersebut menghasilkan string Base64 yang diencode seperti cm9vdDp******mdhbA==.
Tambahkan awalan Basic saat menetapkan header dalam permintaan HTTP Anda:
authorization: Basic cm9vdDp******mdhbA==Badan permintaan
Badan permintaan berupa array JSON. Setiap elemen merepresentasikan satu operasi dokumen.
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body"
}
},
{
"cmd": "delete",
"fields": {
"id": "3"
}
}
]Bidang
| Bidang | Wajib | Deskripsi |
|---|---|---|
cmd | Ya | Operasi yang akan dilakukan. Nilai yang valid: add, delete. Gabungkan beberapa operasi dalam satu permintaan untuk meningkatkan efisiensi jaringan dan pemrosesan. |
fields | Ya | Bidang dokumen yang akan dioperasikan. Harus mencakup bidang kunci primary — OpenSearch mengidentifikasi setiap dokumen berdasarkan nilai kunci primary-nya. |
`cmd` behavior
| Nilai | Perilaku |
|---|---|
add | Mengunggah dokumen. Jika dokumen dengan kunci primary yang sama sudah ada, dokumen asli akan dihapus sebelum dokumen baru ditulis. |
delete | Menghapus dokumen dengan kunci primary yang ditentukan. Jika tidak ada dokumen yang cocok, operasi tetap berhasil. |
Bidang tipe ARRAY
Tentukan bidang tipe ARRAY sebagai array JSON:
[{"cmd": "add", "fields": {"id": "0", "int_array": [14, 85], "string_array": ["abc", "xyz"]}}]Contoh permintaan
POST http://ha-cn-**********.ha.aliyuncs.com/update/$table_name/actions/bulkBadan permintaan:
[{
"cmd": "add",
"fields": {
"id": 1,
"name": "Test Data Push"
}
}]Tanggapan
Berhasil
Tidak ada badan respons yang dikembalikan saat berhasil.
Kesalahan
[
{
"code": 3012,
"message": "Resource not found."
}
]Catatan penggunaan
Nama bidang tidak peka huruf besar/kecil saat mendorong data melalui API atau OpenSearch SDK.
Batas frekuensi dorong dan ukuran data bervariasi tergantung aplikasi. Lihat dokumentasi batas untuk tipe aplikasi Anda.
Setelah mendorong data, periksa respons untuk kode kesalahan. Kode kesalahan
3007memerlukan troubleshooting segera — kesalahan data yang tidak terselesaikan dapat menyebabkan kehilangan data. OpenSearch memproses data secara asinkron: respons sukses berarti data telah diterima, bukan berarti pemrosesan telah selesai. Pantau Konsol OpenSearch untuk mendeteksi kesalahan pemrosesan.Ukuran maksimum badan permintaan sebelum encoding adalah 2 MB. Permintaan yang melebihi batas ini akan ditolak.