全部产品
Search
文档中心

OpenSearch:Memperbarui data

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan SDK OpenSearch Vector Search Edition untuk Java dan Python dalam memperbarui data tabel. Anda dapat mengunggah, memperbarui, dan menghapus dokumen.

Dependensi

Java

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-ha3engine-vector</artifactId>
    <version>1.1.15</version>
</dependency>

Python

# Memerlukan: Python >=3.6
pip install alibabacloud_ha3engine_vector==1.1.15

Go

go get github.com/aliyun/alibabacloud-ha3-go-sdk@v1.1.15-vector

Java dalam mode asinkron

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-sdk-ha3engine-async</artifactId>
  <version>1.1.6</version>
</dependency>

Deskripsi parameter

Anda harus menentukan parameter berikut di SDK untuk Java dan Python: endpoint, instance_id, access_user_name, access_pass_word, dan data_source_name.

  • endpoint: Endpoint internal atau publik.

Endpoint dapat dilihat di bagian Informasi Jaringan dan Endpoint API pada halaman Detail Instance.

image.png

Penting

Setelah mengaktifkan Akses Publik, Anda dapat mengakses instance OpenSearch Vector Search Edition menggunakan endpoint publik dari instance pada mesin lokal Anda. Endpoint publik mencakup kata "public". Anda dapat mengonfigurasi daftar putih alamat IP untuk akses ke instance. Untuk informasi lebih lanjut, lihat bagian Informasi Jaringan dalam topik "Melihat Detail Instance". Jika Anda tidak mengonfigurasi daftar putih alamat IP tersebut, kesalahan larangan akses akan dikembalikan. Kami sarankan melakukan ping ke instance sebelum menggunakannya untuk memastikan bahwa instance dapat diakses.

Jika Anda menggunakan instance Elastic Compute Service (ECS) untuk mengakses instance OpenSearch Vector Search Edition, Anda dapat menentukan vSwitch yang sama dengan instance ECS untuk mengakses instance OpenSearch Vector Search Edition menggunakan Endpoint API.

  • instance_id: ID instance OpenSearch Vector Search Edition.

image.png

  • access_user_name: Nama pengguna.

  • access_pass_word: Kata sandi.

Nama pengguna dan kata sandi dapat dilihat di bagian Endpoint API pada halaman Detail Instance. Kata sandi ditentukan saat pembelian instance dan dapat diubah.

image.png

  • data_source_name: Nama sumber data API. Nilai defaultnya dalam format Instance ID_Nama Tabel.

image.png

Contoh: ha-cn-zpr3dgzxg04_test_image_vector.

Demo pembaruan data

Mengunggah 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 mesin instance OpenSearch Vector Search Edition.
     */
    private Client client;

    @Before
    public void clientInit() throws Exception {
        /*
          Inisialisasi klien mesin.
         */
        Config config = new Config();

        // Nama instance. Anda dapat melihat nama instance di pojok kiri atas halaman Detail Instance. Contoh: ha-cn-i7*****605.
        config.setInstanceId("ha-cn-i7*****605");
        // Nama pengguna. Anda dapat melihat nama pengguna di bagian Endpoint API pada halaman Detail Instance.
        config.setAccessUserName("username");
        // Kata sandi. Anda dapat mengubah kata sandi di bagian Endpoint API pada halaman Detail Instance.
        config.setAccessPassWord("password");
        // Endpoint API dari instance. Anda dapat melihat endpoint API di bagian Endpoint API pada halaman Detail Instance.
        config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");

        client = new Client(config);
    }

    @Test
    public void add() throws Exception {
        // Nama tabel tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
        String tableName = "<instance_id>_<table_name>";

        // Bidang kunci utama dokumen yang datanya akan didorong.
        String pkField = "<field_pk>";

        try {
            // Struktur luar yang digunakan untuk mendorong dokumen. Anda dapat menentukan satu atau lebih operasi dokumen dalam struktur.
            ArrayList<Map<String, ?>> documents = new ArrayList<>();

            // Dokumen yang akan diunggah.
            Map<String, Object> add2Document = new HashMap<>();
            Map<String, Object> add2DocumentFields = new HashMap<>();

            // Konten dokumen. Kunci dan nilai harus dipasangkan.
            // Nilai bidang field_pk harus sama dengan nilai bidang 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>");

            // Konten dapat berupa tipe atribut multi-nilai yang didukung oleh OpenSearch Vector Search Edition. Atur parameter multi_value menjadi true saat Anda mengonfigurasi tabel indeks.
            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);
            // Jalankan perintah add untuk mengunggah dokumen.
            add2Document.put("cmd", "add");
            documents.add(add2Document);

            // 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));
        }
    }
}

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(
    # Endpoint API dari instance. Anda dapat melihat endpoint API di bagian Endpoint API pada halaman Detail Instance.
    endpoint="http://ha-cn-i7*****605.public.ha.aliyuncs.com",
    # Nama pengguna. Anda dapat melihat nama pengguna di bagian Endpoint API pada halaman Detail Instance.
    access_user_name="username",
    # Kata sandi. Anda dapat mengubah kata sandi di bagian Endpoint API pada halaman Detail Instance.
    access_pass_word="password")

# Inisialisasi klien mesin.
client = Client(config)

def push():
    # Nama tabel tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
    tableName = "<instance_id>_<table_name>";

    try:
        # Dokumen yang akan diunggah.
        # Jika dokumen sudah ada, dokumen yang ada akan dihapus, dan dokumen yang ditentukan akan diunggah. 
        # =====================================================
        # Konten dokumen.
        add2DocumentFields = {
            "id": 1,                          # ID bidang kunci utama. Nilainya bertipe INT.
            "name": "Search",                    # Nilai dari bidang bernilai tunggal ini bertipe STRING.
            "str_arr": "a\x1Db\x1Dc\x1Dd"     # Nilai dari bidang bernilai banyak ini bertipe STRING.
        }

        # Tambahkan konten dokumen ke struktur add2Document.
        add2Document = {
            "fields": add2DocumentFields,
            "cmd": "add"                      # Jalankan perintah add untuk mengunggah dokumen.
        }

        optionsHeaders = {}
        # Struktur luar yang digunakan untuk mendorong dokumen. Anda dapat menentukan satu atau lebih operasi dokumen dalam struktur.
        documentArrayList = []
        documentArrayList.append(add2Document)
        pushDocumentsRequest = models.PushDocumentsRequest(optionsHeaders, documentArrayList)

        # Bidang kunci utama dokumen yang datanya akan didorong.
        pkField = "id"
        # Gunakan parameter runtime default untuk permintaan.
        response = client.push_documents(tableName, pkField, pushDocumentsRequest)
        print(response.body)

    except TeaException as e:
        print(f"mengirim permintaan dengan TeaException : {e}")
    except RetryError as e:
        print(f"mengirim permintaan dengan Connection Exception  : {e}")

if __name__ == "__main__":
    push()

Go

Demo ini membungkus data dokumen secara dinamis ke objek Map dan memanggil metode add() untuk menambahkan objek Map ini ke cache. Kemudian, demo memanggil metode pushDocuments() untuk mengirimkan data dokumen dalam objek Map ini sekaligus.

package main

import (
	"fmt"
	"github.com/alibabacloud-go/tea/tea"
	ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)

func main() {
	// Buat instance Config.
	config := &ha3engine.Config{
		// Endpoint API dari instance. Anda dapat melihat endpoint API di bagian Endpoint API pada halaman Detail Instance.
		Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
		// Nama pengguna. Anda dapat melihat nama pengguna di bagian Endpoint API pada halaman Detail Instance.
		AccessUserName: tea.String("username"),
		// Kata sandi. Anda dapat mengubah kata sandi di bagian Endpoint API pada halaman Detail Instance.
		AccessPassWord: tea.String("password"),
	}

	// Inisialisasi klien untuk mengirim permintaan.
	client, _clientErr := ha3engine.NewClient(config)

	// Jika terjadi kesalahan saat sistem membuat klien, _clientErr dan pesan kesalahan dikembalikan.
	if _clientErr != nil {
		fmt.Println(_clientErr)
		return
	}
	docPush(client)
}

func docPush(client *ha3engine.Client) {
	pushDocumentsRequestModel := &ha3engine.PushDocumentsRequest{}
  // Nama tabel tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
  tableName := "<instance_id>_<table_name>"
  // Bidang kunci utama dokumen yang datanya akan didorong.
  keyField := "<field_pk>"

	a := [20]int{}
	array := []map[string]interface{}{}
	for x := range a {
		filed := map[string]interface{}{
			"fields": map[string]interface{}{
				"id":          tea.ToString(x),
				"fb_boolean":  tea.BoolValue(nil),
				"fb_datetime": "2167747200000",
				"fb_string":   "409a6b18-a10b-409e-af91-07121c45d899",
			},
			"cmd": tea.String("add"),
		}
		array = append(array, filed)

		pushDocumentsRequestModel.SetBody(array)

		// Panggil metode untuk mengirim permintaan.
		response, _requestErr := client.PushDocuments(tea.String(dataSourceName), tea.String(keyField), pushDocumentsRequestModel)

		// Jika terjadi kesalahan saat sistem mengirim permintaan, _requestErr dan pesan kesalahan dikembalikan.
		if _requestErr != nil {
			fmt.Println(_requestErr)
			return
		}

		// Tampilkan respons jika tidak ada kesalahan.
		fmt.Println(response)
	}
}

Java dalam mode asinkron

Demo ini membungkus data dokumen secara dinamis ke objek Map dan memanggil metode add() untuk menambahkan objek Map ini ke cache. Kemudian, demo memanggil metode pushDocuments() untuk mengirimkan data dokumen dalam objek Map ini 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 mesin instance OpenSearch Vector Search Edition.
     */
    private AsyncClient client;

    @Before
    public void clientInit() {
        // Nama pengguna dan kata sandi yang digunakan untuk mengakses instance. Anda dapat melihat nama pengguna dan kata sandi di bagian Endpoint API pada halaman Detail Instance.
        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 tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
            String tableName = "<instance_id>_<table_name>";

            // Bidang kunci utama dokumen yang datanya akan didorong.
            String pkField = "<field_pk>";

            // Struktur luar yang digunakan untuk mendorong dokumen. Anda dapat menentukan satu atau lebih operasi dokumen dalam struktur.
            ArrayList<Map<String, ?>> documents = new ArrayList<>();

            // Dokumen yang akan diunggah.
            Map<String, Object> add2Document = new HashMap<>();
            Map<String, Object> add2DocumentFields = new HashMap<>();

            // Konten dokumen. Kunci dan nilai harus dipasangkan.
            // Nilai bidang field_pk harus sama dengan nilai bidang 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>");

            // Konten dapat berupa tipe atribut multi-nilai yang didukung oleh OpenSearch Vector Search Edition. Atur parameter multi_value menjadi true saat Anda mengonfigurasi tabel indeks.
            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);
            // Jalankan perintah add untuk mengunggah dokumen.
            add2Document.put("cmd", "add");
            documents.add(add2Document);

            // 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> abc = e.getData();
            System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
        }
        
    }
}
Catatan

Jika Anda memanggil metode add() untuk mendorong data, data baru yang menggunakan kunci utama yang sama dengan data lama akan menimpa data lama.

Menghapus 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 mesin instance OpenSearch Vector Search Edition.
     */
    private Client client;

    @Before
    public void clientInit() throws Exception {
        /*
          Inisialisasi klien mesin.
         */
        Config config = new Config();

        // Nama instance. Anda dapat melihat nama instance di pojok kiri atas halaman Detail Instance. Contoh: ha-cn-i7*****605.
        config.setInstanceId("ha-cn-i7*****605");
        // Nama pengguna. Anda dapat melihat nama pengguna di bagian Endpoint API pada halaman Detail Instance.
        config.setAccessUserName("username");
        // Kata sandi. Anda dapat mengubah kata sandi di bagian Endpoint API pada halaman Detail Instance.
        config.setAccessPassWord("password");
        // Endpoint API dari instance. Anda dapat melihat endpoint API di bagian Endpoint API pada halaman Detail Instance.
        config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");

        client = new Client(config);
    }


    @Test
    public void delete() throws Exception {
        // Nama tabel tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
        String tableName = "<instance_id>_<table_name>";

        // Bidang kunci utama dokumen yang datanya akan didorong.
        String pkField = "<field_pk>";

        try {
            // Struktur luar yang digunakan untuk mendorong dokumen. Anda dapat menentukan satu atau lebih operasi dokumen dalam struktur.
            ArrayList<Map<String, ?>> documents = new ArrayList<>();

            // Dokumen yang akan dihapus.
            Map<String, Object> delete2Document = new HashMap<>();
            Map<String, Object> delete2DocumentFields = new HashMap<>();

            // Konten dokumen. Kunci dan nilai harus dipasangkan.
            // Nilai bidang field_pk harus sama dengan nilai bidang pkField.
            delete2DocumentFields.put("<field_pk>", "<field_pk_value>");

            // Tambahkan konten dokumen ke struktur delete2Document.
            delete2Document.put("fields", delete2DocumentFields);
            // Jalankan perintah delete untuk menghapus dokumen.
            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));
        }
    }
}

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(
    # Endpoint API dari instance. Anda dapat melihat endpoint API di bagian Endpoint API pada halaman Detail Instance.
    endpoint="http://ha-cn-i7*****605.public.ha.aliyuncs.com",
    # Nama pengguna. Anda dapat melihat nama pengguna di bagian Endpoint API pada halaman Detail Instance.
    access_user_name="username",
    # Kata sandi. Anda dapat mengubah kata sandi di bagian Endpoint API pada halaman Detail Instance.
    access_pass_word="password")

# Inisialisasi klien mesin.
ha3EngineClient = Client(Config)


def pushDoc():
    # Nama tabel tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
    tableName = "<instance_id>_<table_name>";

    try:
        # Struktur luar yang digunakan untuk mendorong dokumen. Anda dapat menentukan satu atau lebih operasi dokumen dalam struktur.
        documentArrayList = []

        # Dokumen yang akan dihapus.
        # Jika Anda ingin menghapus dokumen, Anda harus menentukan bidang kunci utama dokumen.
        # Jika Anda membangun indeks menggunakan struktur hashing multi-level, Anda harus menentukan bidang kunci utama setiap level hash. 
        delete2DocumentFields = {
            "id": 1  # ID bidang kunci utama. Nilainya bertipe INT.
        }
        delete2Document = {
            "fields": delete2DocumentFields,  # Tambahkan konten dokumen ke struktur delete2Document.
            "cmd": "delete"  # Jalankan perintah delete untuk menghapus dokumen.
        }

        optionsHeaders = {}
        documentArrayList.append(delete2Document)
        pushDocumentsRequest = models.PushDocumentsRequest(
            optionsHeaders, documentArrayList
        )

        # Bidang kunci utama dokumen yang datanya akan didorong.
        pkField = "id"
        # Gunakan parameter runtime default untuk permintaan.
        response = ha3EngineClient.push_documents(
            tableName, pkField, pushDocumentsRequest
        )
        print(response)

    except TeaException as e:
        print(f"mengirim permintaan dengan TeaException : {e}")
    except RetryError as e:
        print(f"mengirim permintaan dengan Connection Exception  : {e}")


if __name__ == "__main__":
    pushDoc()

Go

package main

import (
    "fmt"
    "github.com/alibabacloud-go/tea/tea"
    ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)

func main() {
    // Buat instance Config.
    config := &ha3engine.Config{
        // Endpoint API dari instance. Anda dapat melihat endpoint API di bagian Endpoint API pada halaman Detail Instance.
        Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
        // Nama pengguna. Anda dapat melihat nama pengguna di bagian Endpoint API pada halaman Detail Instance.
        AccessUserName: tea.String("username"),
        // Kata sandi. Anda dapat mengubah kata sandi di bagian Endpoint API pada halaman Detail Instance.
        AccessPassWord: tea.String("password"),
    }

    // Inisialisasi klien untuk mengirim permintaan.
    client, _clientErr := ha3engine.NewClient(config)

    // Jika terjadi kesalahan saat sistem membuat klien, _clientErr dan pesan kesalahan dikembalikan.
    if _clientErr != nil {
        fmt.Println(_clientErr)
        return
    }
    deleteDoc(client)
}

func deleteDoc(client *ha3engine.Client) {
    pushDocumentsRequestModel := &ha3engine.PushDocumentsRequest{}
    // Nama tabel tempat dokumen didorong. Format: <Instance ID>_<Nama tabel>.
    tableName := "<instance_id>_<table_name>"
    // Bidang kunci utama dokumen yang datanya 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 sistem mengirim permintaan, _requestErr dan pesan kesalahan dikembalikan.
    if _requestErr != nil {
        fmt.Println(_requestErr)
        return
    }

    // Tampilkan respons jika tidak ada kesalahan.
    fmt.Println(response)
}

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 mesin instance OpenSearch Vector Search Edition.
     */
    private AsyncClient client;

    @Before
    public void clientInit() {
        // Nama pengguna dan kata sandi yang digunakan untuk mengakses instance. Anda dapat melihat nama pengguna dan kata sandi di bagian Endpoint API pada halaman Detail Instance.
        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 dokumen didorong. Format: <Instance ID>_<Nama tabel>.
            String tableName = "<instance_id>_<table_name>";

            // Bidang kunci utama dokumen yang datanya akan didorong.
            String pkField = "<field_pk>";

            // Struktur luar yang digunakan untuk mendorong dokumen. Anda dapat menentukan satu atau lebih operasi dokumen dalam struktur.
            ArrayList<Map<String, ?>> documents = new ArrayList<>();

            // Dokumen yang akan dihapus.
            Map<String, Object> deleteDocument = new HashMap<>();
            Map<String, Object> deleteDocumentFields = new HashMap<>();

            // Konten dokumen. Kunci dan nilai harus dipasangkan.
            // Nilai bidang field_pk harus sama dengan nilai bidang pkField.
            deleteDocumentFields.put("<field_pk>", "<field_pk_value>");

            // Tambahkan konten dokumen ke struktur deleteDocument.
            deleteDocument.put("fields", deleteDocumentFields);
            // Jalankan perintah delete untuk menghapus dokumen.
            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 respons terhadap permintaan, lihat Memperbarui Data.

  • Jangan jalankan perintah go get github.com/aliyun/alibabacloud-ha3-go-sdk untuk menarik dependensi. Dependensi SDK untuk OpenSearch Vector Search Edition dan OpenSearch Retrieval Engine Edition diklasifikasikan ke dalam tag yang sama di GitHub. Anda harus menentukan edisi yang sesuai berdasarkan edisi instance saat menarik dependensi.