Topik ini menjelaskan cara menggunakan SDK OpenSearch Vector Search Edition untuk Java dan Python guna memperbarui data tabel, termasuk mengunggah, memperbarui, dan menghapus dokumen.
Dependencies
Java
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-sdk-ha3engine-vector</artifactId>
<version>1.1.18</version>
</dependency>
Python
# Requires: Python >=3.6
pip install alibabacloud_ha3engine_vector==1.1.18
Go
go get github.com/aliyun/alibabacloud-ha3-go-sdk@v1.1.18-vector
Asynchronous Java
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-sdk-ha3engine-async</artifactId>
<version>1.1.8</version>
</dependency>
Deskripsi parameter
Anda harus menentukan parameter berikut dalam SDK untuk Java dan Python: endpoint, instance_id, access_user_name, access_pass_word, dan data_source_name.
endpoint: Titik akhir internal atau publik. Tentukan hanya nama domain tanpa awalanhttp://, misalnyaha-cn-xxxxxxxx.public.ha.aliyuncs.com.
Informasi ini tersedia di halaman Detail Instans pada bagian Informasi Jaringan dan Titik Akhir API.
Setelah Anda mengaktifkan Akses Publik, Anda dapat mengakses instans OpenSearch Vector Search Edition menggunakan public endpoint dari mesin on-premises. Titik akhir publik berisi kata "public". Anda dapat mengonfigurasi daftar putih alamat IP untuk mengatur akses ke instans. Untuk informasi selengkapnya, lihat bagian Informasi Jaringan dalam topik "Lihat detail instans". Jika Anda tidak mengonfigurasi daftar putih alamat IP tersebut, sistem akan mengembalikan error larangan akses. Disarankan agar Anda melakukan ping ke instans terlebih dahulu untuk memastikan instans tersebut dapat diakses.
Jika Anda menggunakan instans Elastic Compute Service (ECS) untuk mengakses instans OpenSearch Vector Search Edition, Anda dapat menentukan vSwitch yang sama dengan instans ECS tersebut untuk mengakses instans melalui API endpoint.
instance_id: ID instans OpenSearch Vector Search Edition.
access_user_name: Username.
access_pass_word: Password.
Username dan password dapat dilihat di bagian Titik Akhir API pada halaman Detail Instans. Password ditentukan saat pembelian instans dan dapat diubah.
data_source_name: Nama sumber data untuk pengiriman data API. Format default-nya adalah<instance_id>_<table_name>.
data_source_name=ha-cn-zpr3dgzxg04_test_image_vector
Demo pembaruan data
Unggah dokumen
Java
import com.aliyun.ha3engine.vector.Client;
import com.aliyun.ha3engine.vector.models.Config;
import com.aliyun.ha3engine.vector.models.PushDocumentsRequest;
import com.aliyun.ha3engine.vector.models.PushDocumentsResponse;
import com.aliyun.tea.TeaException;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author alibaba
*/
public class PushDoc {
/**
* Klien OpenSearch Vector Search Edition.
*/
private Client client;
@Before
public void clientInit() throws Exception {
/*
Inisialisasi klien OpenSearch Vector Search Edition.
*/
Config config = new Config();
// Nama instans. Anda dapat menemukannya di pojok kiri atas halaman Detail Instans. Contoh: ha-cn-i7*****605.
config.setInstanceId("ha-cn-i7*****605");
// Username. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
config.setAccessUserName("username");
// Password. Anda dapat mengubahnya di bagian Titik Akhir API pada halaman Detail Instans.
config.setAccessPassWord("password");
// Titik akhir API. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
client = new Client(config);
}
@Test
public void add() throws Exception {
// Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
String tableName = "<instance_id>_<table_name>";
// Bidang kunci primer untuk dokumen yang akan didorong.
String pkField = "<field_pk>";
try {
// Ini adalah struktur luar untuk operasi dorong dokumen. Struktur ini dapat berisi satu atau beberapa operasi dokumen.
ArrayList<Map<String, ?>> documents = new ArrayList<>();
// Tambahkan dokumen.
Map<String, Object> add2Document = new HashMap<>();
Map<String, Object> add2DocumentFields = new HashMap<>();
// Masukkan konten dokumen. Pasangan kunci-nilai harus sesuai.
// Bidang <field_pk> harus konsisten dengan parameter pkField.
add2DocumentFields.put("<field_pk>", "<field_pk_value>");
add2DocumentFields.put("<field_map_key_1>", "<field_map_value_1>");
add2DocumentFields.put("<field_map_key_2>", "<field_map_value_2>");
// OpenSearch Vector Search Edition mendukung atribut multi-nilai. Di indeks, atur `"multi_value": true`.
ArrayList<Object> addDocumentMultiFields = new ArrayList<>();
addDocumentMultiFields.add("multi_value_1");
addDocumentMultiFields.add("multi_value_2");
add2DocumentFields.put("<multi_value_key>", addDocumentMultiFields);
// Tambahkan konten dokumen ke struktur add2Document.
add2Document.put("fields", add2DocumentFields);
// Perintah untuk menambahkan dokumen baru adalah `add`.
add2Document.put("cmd", "add");
documents.add(add2Document);
// Dorong data.
PushDocumentsRequest request = new PushDocumentsRequest();
// Secara default, sistem memeriksa apakah bidang kunci primer ada saat data didorong. Untuk menonaktifkan pemeriksaan ini, atur header permintaan `X-Opensearch-Validate-Data` ke `false`.
// request.headers = new HashMap<>();
// request.headers.put("X-Opensearch-Validate-Data", "false");
request.setBody(documents);
PushDocumentsResponse response = client.pushDocuments(tableName, pkField, request);
String responseBody = response.getBody();
System.out.println("result: " + responseBody);
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map<String, Object> exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}</field_pk></table_name></instance_id>Python
from alibabacloud_ha3engine_vector.client import Client
from alibabacloud_ha3engine_vector.models import Config
from alibabacloud_ha3engine_vector import models
from Tea.exceptions import TeaException, RetryError
config = Config(
# Titik akhir API. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
endpoint="ha-cn-i7*****605.public.ha.aliyuncs.com",
# Username. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
access_user_name="username",
# Password. Anda dapat mengubahnya di bagian Titik Akhir API pada halaman Detail Instans.
access_pass_word="password")
# Inisialisasi klien engine.
client = Client(config)
def push():
# Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
tableName = "<instance_id>_<table_name>";
try:
# Tambahkan dokumen.
# Jika dokumen sudah ada, dokumen tersebut akan dihapus lalu ditambahkan kembali.
# =====================================================
# Perbarui konten dokumen.
add2DocumentFields = {
"id": 1, # ID kunci primer tipe nilai tunggal INT.
"name": "search", # Tipe nilai tunggal STRING.
"str_arr": "a\x1Db\x1Dc\x1Dd" # Tipe multi-nilai STRING.
}
# Tambahkan konten dokumen ke struktur add2Document.
add2Document = {
"fields": add2DocumentFields,
"cmd": "add" # Perintah untuk menambahkan dokumen baru adalah `add`.
}
optionsHeaders = {}
# Ini adalah struktur luar untuk operasi dorong dokumen. Struktur ini dapat berisi satu atau beberapa operasi dokumen.
documentArrayList = []
documentArrayList.append(add2Document)
pushDocumentsRequest = models.PushDocumentsRequest(optionsHeaders, documentArrayList)
# Secara default, sistem memeriksa apakah bidang kunci primer ada saat data didorong. Untuk menonaktifkan pemeriksaan ini, atur header permintaan `X-Opensearch-Validate-Data` ke `false`.
# pushDocumentsRequest.headers = {"X-Opensearch-Validate-Data": "false"}
# Bidang kunci primer untuk dokumen yang akan didorong.
pkField = "id"
# Kirim permintaan menggunakan parameter waktu proses default.
response = client.push_documents(tableName, pkField, pushDocumentsRequest)
print(response.body)
except TeaException as e:
print(f"send request with TeaException : {e}")
except RetryError as e:
print(f"send request with Connection Exception : {e}")
if __name__ == "__main__":
push()</table_name></instance_id>Go
Demo ini secara dinamis membungkus data dokumen ke dalam objek Map dan memanggil metode add() untuk menambahkan objek tersebut ke cache. Selanjutnya, demo memanggil metode pushDocuments() untuk mengirimkan data dokumen dalam objek Map tersebut sekaligus.
package main
import (
"fmt"
"github.com/alibabacloud-go/tea/tea"
ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)
func main() {
// Buat instans klien untuk permintaan.
config := &ha3engine.Config{
// Titik akhir API. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
// Username. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
AccessUserName: tea.String("username"),
// Password. Anda dapat mengubahnya di bagian Titik Akhir API pada halaman Detail Instans.
AccessPassWord: tea.String("password"),
}
// Inisialisasi klien untuk mengirim permintaan.
client, _clientErr := ha3engine.NewClient(config)
// Jika terjadi error selama inisialisasi klien, _clientErr dikembalikan dan pesan error dicetak.
if _clientErr != nil {
fmt.Println(_clientErr)
return
}
docPush(client)
}
func docPush(client *ha3engine.Client) {
pushDocumentsRequestModel := &ha3engine.PushDocumentsRequest{}
// Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
tableName := "<instance_id>_<table_name>"
// Bidang kunci primer untuk dokumen yang akan didorong.
keyField := "<field_pk>"
// Bidang vektor.
vector := [4]float32{1.2, 2.2, 3.2, 4.2}
filed := map[string]interface{}{
"fields": map[string]interface{}{
"id": 1,
"name": "test",
"vector": vector,
},
"cmd": tea.String("add"),
}
array := []map[string]interface{}{}
array = append(array, filed)
pushDocumentsRequestModel.SetBody(array)
// Secara default, sistem memeriksa apakah bidang kunci primer ada saat data didorong. Untuk menonaktifkan pemeriksaan ini, atur header permintaan `X-Opensearch-Validate-Data` ke `false`.
//headers := map[string]*string{}
//headers["X-Opensearch-Validate-Data"] = tea.String("false")
//pushDocumentsRequestModel.SetHeaders(headers)
// Panggil metode untuk mengirim permintaan.
response, _requestErr := client.PushDocuments(tea.String(tableName), tea.String(keyField), pushDocumentsRequestModel)
// Jika terjadi error saat mengirim permintaan, _requestErr dikembalikan dan pesan error dicetak.
if _requestErr != nil {
fmt.Println(_requestErr)
return
}
// Cetak konten tanggapan.
fmt.Println(response)
}</table_name></instance_id>Java dalam mode asinkron
Demo ini secara dinamis membungkus data dokumen ke dalam objek Map dan memanggil metode add() untuk menambahkan objek tersebut ke cache. Selanjutnya, demo memanggil metode pushDocuments() untuk mengirimkan data dokumen dalam objek Map tersebut sekaligus.
import com.aliyun.ha3engine.async.AsyncClient;
import com.aliyun.ha3engine.async.models.PushDocumentsRequest;
import com.aliyun.ha3engine.async.models.PushDocumentsResponse;
import com.aliyun.sdk.ha3engine.async.core.AsyncConfigInfoProvider;
import com.aliyun.tea.TeaException;
import darabonba.core.client.ClientOverrideConfiguration;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* @author alibaba
*/
public class AddDoc {
/**
* Klien OpenSearch Vector Search Edition.
*/
private AsyncClient client;
@Before
public void clientInit() {
// Konfigurasikan username dan password untuk instans. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");
// Inisialisasi klien asinkron.
client = AsyncClient.builder()
.credentialsProvider(provider)
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setEndpointOverride("ha-cn-i7*****605.public.ha.aliyuncs.com")
.setProtocol("http")
).build();
}
@Test
public void add() {
try {
// Nama tabel untuk operasi dorong dokumen.
String tableName = "<table_name>";
// Bidang kunci primer untuk dokumen yang akan didorong.
String pkField = "<field_pk>";
// Ini adalah struktur luar untuk operasi dorong dokumen. Struktur ini dapat berisi satu atau beberapa operasi dokumen.
ArrayList<Map<String, ?>> documents = new ArrayList<>();
// Tambahkan dokumen.
Map<String, Object> add2Document = new HashMap<>();
Map<String, Object> add2DocumentFields = new HashMap<>();
// Perbarui konten dokumen. Pasangan kunci-nilai harus sesuai.
// Bidang <field_pk> harus konsisten dengan parameter pkField.
add2DocumentFields.put("<field_pk>", "<field_pk_value>");
add2DocumentFields.put("<field_map_key_1>", "<field_map_value_1>");
add2DocumentFields.put("<field_map_key_2>", "<field_map_value_2>");
// OpenSearch Vector Search Edition mendukung atribut multi-nilai. Di indeks, atur `"multi_value": true`.
ArrayList<Object> addDocumentMultiFields = new ArrayList<>();
addDocumentMultiFields.add("multi_value_1");
addDocumentMultiFields.add("multi_value_2");
add2DocumentFields.put("<multi_value_key>", addDocumentMultiFields);
// Tambahkan konten dokumen ke struktur add2Document.
add2Document.put("fields", add2DocumentFields);
// Perintah untuk menambahkan dokumen baru adalah `add`.
add2Document.put("cmd", "add");
documents.add(add2Document);
// Dorong data.
PushDocumentsRequest request = PushDocumentsRequest.builder().body(documents).build();
// Secara default, sistem memeriksa apakah bidang kunci primer ada saat data didorong. Untuk menonaktifkan pemeriksaan ini, atur header permintaan `X-Opensearch-Validate-Data` ke `false`.
// request.getHeaderParameters().put("X-Opensearch-Validate-Data", "false");
CompletableFuture<PushDocumentsResponse> responseCompletableFuture = client.pushDocuments(tableName, pkField, request);
String responseBody = responseCompletableFuture.get().getBody();
System.out.println("result: " + responseBody);
} catch (ExecutionException | InterruptedException e) {
System.out.println(e.getMessage());
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map<String, Object> exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}</field_pk>Jika Anda memanggil metode add() untuk mendorong data, data baru yang menggunakan kunci primer yang sama dengan data lama akan menimpa data lama tersebut.
Hapus dokumen
Java
import com.aliyun.ha3engine.vector.Client;
import com.aliyun.ha3engine.vector.models.*;
import com.aliyun.tea.TeaException;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author alibaba
*/
public class PushDoc {
/**
* Klien OpenSearch Vector Search Edition.
*/
private Client client;
@Before
public void clientInit() throws Exception {
/*
Inisialisasi klien OpenSearch Vector Search Edition.
*/
Config config = new Config();
// Nama instans. Anda dapat menemukannya di pojok kiri atas halaman Detail Instans. Contoh: ha-cn-i7*****605.
config.setInstanceId("ha-cn-i7*****605");
// Username. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
config.setAccessUserName("username");
// Password. Anda dapat mengubahnya di bagian Informasi Jaringan pada halaman Detail Instans.
config.setAccessPassWord("password");
// Titik akhir API. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
client = new Client(config);
}
@Test
public void delete() throws Exception {
// Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
String tableName = "<instance_id>_<table_name>";
// Bidang kunci primer untuk dokumen yang akan didorong.
String pkField = "<field_pk>";
try {
// Ini adalah struktur luar untuk operasi dorong dokumen. Struktur ini dapat berisi satu atau beberapa operasi dokumen.
ArrayList<Map<String, ?>> documents = new ArrayList<>();
// Hapus dokumen.
Map<String, Object> delete2Document = new HashMap<>();
Map<String, Object> delete2DocumentFields = new HashMap<>();
// Masukkan konten dokumen. Pasangan kunci-nilai harus sesuai.
// Bidang <field_pk> harus konsisten dengan parameter pkField.
delete2DocumentFields.put("<field_pk>", "<field_pk_value>");
// Tambahkan konten dokumen ke struktur delete2Document.
delete2Document.put("fields", delete2DocumentFields);
// Perintah untuk menghapus dokumen adalah `delete`.
delete2Document.put("cmd", "delete");
documents.add(delete2Document);
// Dorong data.
PushDocumentsRequest request = new PushDocumentsRequest();
request.setBody(documents);
PushDocumentsResponse response = client.pushDocuments(tableName, pkField, request);
String responseBody = response.getBody();
System.out.println("result: " + responseBody);
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map<String, Object> exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}</field_pk></table_name></instance_id>Python
from alibabacloud_ha3engine_vector.client import Client
from alibabacloud_ha3engine_vector.models import Config
from alibabacloud_ha3engine_vector import models
from Tea.exceptions import TeaException, RetryError
config = Config(
# Titik akhir API. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
endpoint="ha-cn-i7*****605.public.ha.aliyuncs.com",
# Username. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
access_user_name="username",
# Password. Anda dapat mengubahnya di bagian Titik Akhir API pada halaman Detail Instans.
access_pass_word="password")
# Inisialisasi klien engine.
client = Client(config)
def push():
# Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
tableName = "<instance_id>_<table_name>";
try:
// Ini adalah struktur luar untuk operasi dorong dokumen. Struktur ini dapat berisi satu atau beberapa operasi dokumen.
documentArrayList = []
// Hapus dokumen.
// Untuk menghapus dokumen, Anda harus menentukan kunci primernya.
// Jika indeks dibuat dengan hashing multi-level, Anda harus menentukan kunci primer untuk setiap level hash.
delete2DocumentFields = {
"id": 1 // ID kunci primer tipe nilai tunggal INT.
}
delete2Document = {
"fields": delete2DocumentFields, // Tambahkan konten dokumen ke struktur delete2Document.
"cmd": "delete" // Perintah untuk menghapus dokumen adalah `delete`.
}
optionsHeaders = {}
documentArrayList.append(delete2Document)
pushDocumentsRequest = models.PushDocumentsRequest(
optionsHeaders, documentArrayList
)
// Bidang kunci primer untuk dokumen yang akan didorong.
pkField = "id"
// Kirim permintaan menggunakan parameter waktu proses default.
response = client.push_documents(
tableName, pkField, pushDocumentsRequest
)
print(response)
except TeaException as e:
print(f"send request with TeaException : {e}")
except RetryError as e:
print(f"send request with Connection Exception : {e}")
if __name__ == "__main__":
push()</table_name></instance_id>Go
package main
import (
"fmt"
"github.com/alibabacloud-go/tea/tea"
ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)
func main() {
// Buat instans klien untuk permintaan.
config := &ha3engine.Config{
// Titik akhir API. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
// Nama pengguna. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
AccessUserName: tea.String("username"),
// Kata sandi. Anda dapat mengubahnya di bagian Titik Akhir API pada halaman Detail Instans.
AccessPassWord: tea.String("password"),
}
// Inisialisasi klien untuk mengirim permintaan.
client, _clientErr := ha3engine.NewClient(config)
// Jika terjadi kesalahan saat inisialisasi klien, _clientErr akan dikembalikan dan pesan kesalahan akan dicetak.
if _clientErr != nil {
fmt.Println(_clientErr)
return
}
deleteDoc(client)
}
func deleteDoc(client *ha3engine.Client) {
pushDocumentsRequestModel := &ha3engine.PushDocumentsRequest{}
// Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
tableName := "<instance_id>_<table_name>"
// Bidang kunci primer untuk dokumen yang akan didorong.
keyField := "<field_pk>"
var array []map[string]interface{}
filed := map[string]interface{}{
"fields": map[string]interface{}{
"id": 2,
},
"cmd": tea.String("delete"),
}
array = append(array, filed)
pushDocumentsRequestModel.SetBody(array)
// Panggil metode untuk mengirim permintaan.
response, _requestErr := client.PushDocuments(tea.String(tableName), tea.String(keyField), pushDocumentsRequestModel)
// Jika terjadi kesalahan saat mengirim permintaan, _requestErr akan dikembalikan dan pesan kesalahan akan dicetak.
if _requestErr != nil {
fmt.Println(_requestErr)
return
}
// Cetak konten tanggapan.
fmt.Println(response)
}</table_name></instance_id>Java dalam mode asinkron
import com.aliyun.ha3engine.async.AsyncClient;
import com.aliyun.ha3engine.async.models.PushDocumentsRequest;
import com.aliyun.ha3engine.async.models.PushDocumentsResponse;
import com.aliyun.sdk.ha3engine.async.core.AsyncConfigInfoProvider;
import com.aliyun.tea.TeaException;
import darabonba.core.client.ClientOverrideConfiguration;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* @author alibaba
*/
public class DeleteDoc {
/**
* Klien OpenSearch Vector Search Edition.
*/
private AsyncClient client;
@Before
public void clientInit() {
// Konfigurasikan nama pengguna dan kata sandi untuk instans. Anda dapat menemukannya di bagian Titik Akhir API pada halaman Detail Instans.
AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");
// Inisialisasi klien asinkron.
client = AsyncClient.builder()
.credentialsProvider(provider)
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setEndpointOverride("ha-cn-i7*****605.public.ha.aliyuncs.com")
.setProtocol("http")
).build();
}
@Test
public void delete() throws Exception {
try {
// Nama tabel tempat Anda ingin mendorong dokumen. Formatnya adalah `<instance_id>_<table_name>`.
String tableName = "<instance_id>_<table_name>";
// Bidang kunci utama untuk dokumen yang akan didorong.
String pkField = "<field_pk>";
// Ini adalah struktur luar untuk pendorongan dokumen. Ini dapat berisi satu atau beberapa operasi dokumen.
ArrayList<Map<String, ?>> documents = new ArrayList<>();
// Hapus dokumen.
Map<String, Object> deleteDocument = new HashMap<>();
Map<String, Object> deleteDocumentFields = new HashMap<>();
// Perbarui konten dokumen. Pasangan kunci-nilai harus cocok.
// Bidang <field_pk> harus konsisten dengan parameter pkField.
deleteDocumentFields.put("<field_pk>", "<field_pk_value>");
// Tambahkan konten dokumen ke struktur deleteDocument.
deleteDocument.put("fields", deleteDocumentFields);
// Perintah untuk menghapus dokumen adalah `delete`.
deleteDocument.put("cmd", "delete");
documents.add(deleteDocument);
// Dorong data.
PushDocumentsRequest request = PushDocumentsRequest.builder().body(documents).build();
CompletableFuture<PushDocumentsResponse> responseCompletableFuture = client.pushDocuments(tableName, pkField, request);
String responseBody = responseCompletableFuture.get().getBody();
System.out.println("result: " + responseBody);
} catch (ExecutionException | InterruptedException e) {
System.out.println(e.getMessage());
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map<String, Object> exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}Informasi tambahan
Untuk informasi tentang tanggapan terhadap permintaan, lihat Perbarui data.
Jangan gunakan perintah
go get github.com/aliyun/alibabacloud-ha3-go-sdkuntuk menarik dependensi Git. Anda harus menentukan versinya karena tag untuk OpenSearch Vector Search Edition dan OpenSearch Edisi Mesin Pengambilan berada dalam repositori GitHub yang sama. Pastikan Anda menarik dependensi yang sesuai dengan versi instans Anda.