すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:データの更新

最終更新日:Jun 18, 2026

このトピックでは、Java および Python 用の OpenSearch Vector Search Edition SDK を使用してテーブルデータを更新する方法について説明します。ドキュメントのアップロード、更新、削除が可能です。

依存関係

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

非同期 Java

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

パラメーターの説明

Java および Python 用の SDK では、次のパラメーターを指定する必要があります:endpointinstance_idaccess_user_nameaccess_pass_word、および data_source_name

  • endpoint:内部またはパブリックエンドポイントです。http:// プレフィックスを付けずに、ha-cn-xxxxxxxx.public.ha.aliyuncs.com のようにドメイン名のみを指定します。

この情報は、[インスタンス詳細] ページの [ネットワーク情報] および [API エンドポイント] セクションで確認できます。

重要

[パブリックアクセス] を有効にすると、オンプレミスのマシンからインスタンスの パブリックエンドポイント を使用して OpenSearch Vector Search Edition インスタンスにアクセスできます。パブリックエンドポイントには "public" という単語が含まれています。インスタンスへのアクセス用に IP アドレスホワイトリストを設定できます。詳細については、「インスタンス詳細の表示」の 「ネットワーク情報」セクション をご参照ください。このような IP アドレスホワイトリストを設定しない場合、アクセス拒否エラーが返されます。インスタンスがアクセス可能であることを確認するために、使用前にインスタンスに ping を実行することを推奨します。

Elastic Compute Service (ECS) インスタンスを使用して OpenSearch Vector Search Edition インスタンスにアクセスする場合、ECS インスタンスと同じ vSwitch を指定して、API エンドポイント を使用して OpenSearch Vector Search Edition インスタンスにアクセスできます。

  • instance_id:OpenSearch Vector Search Edition インスタンスの ID。

  • access_user_name:ユーザー名。

  • access_pass_word:パスワード。

ユーザー名とパスワードは、[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。パスワードはインスタンスの購入時に指定し、変更も可能です。

  • data_source_name:API でのデータ送信に用いるデータソースの名前です。デフォルトのフォーマットは <instance_id>_<table_name> です。

data_source_name=ha-cn-zpr3dgzxg04_test_image_vector

データ更新のデモ

ドキュメントのアップロード

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 {
    /**
     * OpenSearch Vector Search Edition のクライアント。
     */
    private Client client;
    @Before
    public void clientInit() throws Exception {
        /*
          OpenSearch Vector Search Edition クライアントを初期化します。
         */
        Config config = new Config();
        // インスタンス名。[インスタンス詳細] ページの左上隅で確認できます。例:ha-cn-i7*****605。
        config.setInstanceId("ha-cn-i7*****605");
        // ユーザー名。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        config.setAccessUserName("username");
        // パスワード。[インスタンス詳細] ページの [API エンドポイント] セクションで変更できます。
        config.setAccessPassWord("password");
        // API エンドポイント。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
        client = new Client(config);
    }
    @Test
    public void add() throws Exception {
        // ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
        String tableName = "<instance_id>_<table_name>";
        // プッシュするドキュメントのプライマリキーフィールド。
        String pkField = "<field_pk>";
        try {
            // これはドキュメントプッシュの外部構造で、1 つ以上のドキュメント操作を含めることができます。
            ArrayList<Map<String, ?>> documents = new ArrayList<>();
            // ドキュメントを追加します。
            Map<String, Object> add2Document = new HashMap<>();
            Map<String, Object> add2DocumentFields = new HashMap<>();
            // ドキュメントの内容を挿入します。キーと値のペアが一致している必要があります。
            //  フィールドは 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 は多値属性をサポートしています。インデックスで `"multi_value": true` を設定します。
            ArrayList<Object> addDocumentMultiFields = new ArrayList<>();
            addDocumentMultiFields.add("multi_value_1");
            addDocumentMultiFields.add("multi_value_2");
            add2DocumentFields.put("<multi_value_key>", addDocumentMultiFields);
            // ドキュメントの内容を add2Document 構造体に追加します。
            add2Document.put("fields", add2DocumentFields);
            // 新しいドキュメントを追加するコマンドは `add` です。
            add2Document.put("cmd", "add");
            documents.add(add2Document);
            // データをプッシュします。
            PushDocumentsRequest request = new PushDocumentsRequest();
            // デフォルトでは、データがプッシュされると、システムはプライマリキーフィールドが存在するかどうかをチェックします。このチェックを無効にするには、リクエストヘッダー `X-Opensearch-Validate-Data` を `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));
        }
    }
}

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(
    # API エンドポイント。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
    endpoint="ha-cn-i7*****605.public.ha.aliyuncs.com",
    # ユーザー名。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
    access_user_name="username",
    # パスワード。[インスタンス詳細] ページの [API エンドポイント] セクションで変更できます。
    access_pass_word="password")
# エンジンクライアントを初期化します。
client = Client(config)
def push():
    # ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
    tableName = "<instance_id>_<table_name>";
    try:
        # ドキュメントを追加します。
        # ドキュメントが既に存在する場合、削除されてから再度追加されます。
        # =====================================================
        # ドキュメントの内容を更新します。
        add2DocumentFields = {
            "id": 1,                          # INT 単一値型のプライマリキー ID。
            "name": "search",                 # STRING 単一値型。
            "str_arr": "a\x1Db\x1Dc\x1Dd"     # STRING 多値型。
        }
        # ドキュメントの内容を add2Document 構造体に追加します。
        add2Document = {
            "fields": add2DocumentFields,
            "cmd": "add"                      # 新しいドキュメントを追加するコマンドは `add` です。
        }
        optionsHeaders = {}
        # これはドキュメントプッシュの外部構造で、1 つ以上のドキュメント操作を含めることができます。
        documentArrayList = []
        documentArrayList.append(add2Document)
        pushDocumentsRequest = models.PushDocumentsRequest(optionsHeaders, documentArrayList)
        # デフォルトでは、データがプッシュされると、システムはプライマリキーフィールドが存在するかどうかをチェックします。このチェックを無効にするには、リクエストヘッダー `X-Opensearch-Validate-Data` を `false` に設定します。
        # pushDocumentsRequest.headers = {"X-Opensearch-Validate-Data": "false"}
        # プッシュするドキュメントのプライマリキーフィールド。
        pkField = "id"
        # デフォルトのランタイムパラメーターを使用してリクエストを送信します。
        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()

Go

このデモでは、add コマンドを含むドキュメントデータを Map オブジェクトとして作成し、PushDocuments メソッドを呼び出して一度に送信します。

package main
import (
	"fmt"
	"github.com/alibabacloud-go/tea/tea"
	ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)
func main() {
	// リクエスト用のクライアントインスタンスを作成します。
	config := &ha3engine.Config{
		// API エンドポイント。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
		Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
		// ユーザー名。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
		AccessUserName: tea.String("username"),
		// パスワード。[インスタンス詳細] ページの [API エンドポイント] セクションで変更できます。
		AccessPassWord: tea.String("password"),
	}
	// リクエストを送信するクライアントを初期化します。
	client, _clientErr := ha3engine.NewClient(config)
	// クライアントの初期化中にエラーが発生した場合、_clientErr が返され、エラーメッセージが出力されます。
	if _clientErr != nil {
		fmt.Println(_clientErr)
		return
	}
	docPush(client)
}
func docPush(client *ha3engine.Client) {
	pushDocumentsRequestModel := &ha3engine.PushDocumentsRequest{}
	// ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
	tableName := "<instance_id>_<table_name>"
	// プッシュするドキュメントのプライマリキーフィールド。
	keyField := "<field_pk>"
	// ベクターフィールド。
	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)
    // デフォルトでは、データがプッシュされると、システムはプライマリキーフィールドが存在するかどうかをチェックします。このチェックを無効にするには、リクエストヘッダー `X-Opensearch-Validate-Data` を `false` に設定します。
	//headers := map[string]*string{}
	//headers["X-Opensearch-Validate-Data"] = tea.String("false")
	//pushDocumentsRequestModel.SetHeaders(headers)
	// メソッドを呼び出してリクエストを送信します。
	response, _requestErr := client.PushDocuments(tea.String(tableName), tea.String(keyField), pushDocumentsRequestModel)
	// リクエストの送信中にエラーが発生した場合、_requestErr が返され、エラーメッセージが出力されます。
	if _requestErr != nil {
		fmt.Println(_requestErr)
		return
	}
	// レスポンスの内容を出力します。
	fmt.Println(response)
}

非同期 Java

このデモでは、add コマンドを含むドキュメントデータを Map オブジェクトとして作成し、pushDocuments メソッドを呼び出して一度に送信します。

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 {
    /**
     * OpenSearch Vector Search Edition のクライアント。
     */
    private AsyncClient client;
    @Before
    public void clientInit() {
        // インスタンスのユーザー名とパスワードを設定します。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");
        // 非同期クライアントを初期化します。
        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 {
            // ドキュメントプッシュ用のテーブルの名前。フォーマットは `_` です。
            String tableName = "<instance_id>_<table_name>";
            // プッシュするドキュメントのプライマリキーフィールド。
            String pkField = "<field_pk>";
            // これはドキュメントプッシュの外部構造で、1 つ以上のドキュメント操作を含めることができます。
            ArrayList<Map<String, ?>> documents = new ArrayList<>();
            // ドキュメントを追加します。
            Map<String, Object> add2Document = new HashMap<>();
            Map<String, Object> add2DocumentFields = new HashMap<>();
            // ドキュメントの内容を更新します。キーと値のペアが一致している必要があります。
            //  フィールドは 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 は多値属性をサポートしています。インデックスで `"multi_value": true` を設定します。
            ArrayList<Object> addDocumentMultiFields = new ArrayList<>();
            addDocumentMultiFields.add("multi_value_1");
            addDocumentMultiFields.add("multi_value_2");
            add2DocumentFields.put("<multi_value_key>", addDocumentMultiFields);
            // ドキュメントの内容を add2Document 構造体に追加します。
            add2Document.put("fields", add2DocumentFields);
            // 新しいドキュメントを追加するコマンドは `add` です。
            add2Document.put("cmd", "add");
            documents.add(add2Document);
            // データをプッシュします。
            PushDocumentsRequest request = PushDocumentsRequest.builder().body(documents).build();
            // デフォルトでは、データがプッシュされると、システムはプライマリキーフィールドが存在するかどうかをチェックします。このチェックを無効にするには、リクエストヘッダー `X-Opensearch-Validate-Data` を `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));
        }
    }
}
説明

add コマンドを使用してデータをプッシュする場合、古いデータと同じプライマリキーを使用する新しいデータは古いデータを上書きします。

ドキュメントの削除

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 {
    /**
     * OpenSearch Vector Search Edition のクライアント。
     */
    private Client client;
    @Before
    public void clientInit() throws Exception {
        /*
          OpenSearch Vector Search Edition クライアントを初期化します。
         */
        Config config = new Config();
        // インスタンス名。[インスタンス詳細] ページの左上隅で確認できます。例:ha-cn-i7*****605。
        config.setInstanceId("ha-cn-i7*****605");
        // ユーザー名。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        config.setAccessUserName("username");
        // パスワード。[インスタンス詳細] ページの [API エンドポイント] セクションで変更できます。
        config.setAccessPassWord("password");
        // API エンドポイント。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
        client = new Client(config);
    }
    @Test
    public void delete() throws Exception {
        // ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
        String tableName = "<instance_id>_<table_name>";
        // プッシュするドキュメントのプライマリキーフィールド。
        String pkField = "<field_pk>";
        try {
            // これはドキュメントプッシュの外部構造で、1 つ以上のドキュメント操作を含めることができます。
            ArrayList<Map<String, ?>> documents = new ArrayList<>();
            // ドキュメントを削除します。
            Map<String, Object> delete2Document = new HashMap<>();
            Map<String, Object> delete2DocumentFields = new HashMap<>();
            // ドキュメントの内容を挿入します。キーと値のペアが一致している必要があります。
            //  フィールドは pkField パラメーターと一致している必要があります。
            delete2DocumentFields.put("<field_pk>", "<field_pk_value>");
            // ドキュメントの内容を delete2Document 構造体に追加します。
            delete2Document.put("fields", delete2DocumentFields);
            // ドキュメントを削除するコマンドは `delete` です。
            delete2Document.put("cmd", "delete");
            documents.add(delete2Document);
            // データをプッシュします。
            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(
    # API エンドポイント。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
    endpoint="ha-cn-i7*****605.public.ha.aliyuncs.com",
    # ユーザー名。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
    access_user_name="username",
    # パスワード。[インスタンス詳細] ページの [API エンドポイント] セクションで変更できます。
    access_pass_word="password")
# エンジンクライアントを初期化します。
client = Client(config)
def push():
    # ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
    tableName = "<instance_id>_<table_name>";
    try:
        # これはドキュメントプッシュの外部構造で、1 つ以上のドキュメント操作を含めることができます。
        documentArrayList = []
        # ドキュメントを削除します。
        # ドキュメントを削除するには、そのプライマリキーを指定する必要があります。
        # インデックスが多段階ハッシュで構築されている場合は、各ハッシュレベルのプライマリキーを指定する必要があります。
        delete2DocumentFields = {
            "id": 1  # INT 単一値型のプライマリキー ID。
        }
        delete2Document = {
            "fields": delete2DocumentFields,  # ドキュメントの内容を delete2Document 構造体に追加します。
            "cmd": "delete"  # ドキュメントを削除するコマンドは `delete` です。
        }
        optionsHeaders = {}
        documentArrayList.append(delete2Document)
        pushDocumentsRequest = models.PushDocumentsRequest(
            optionsHeaders, documentArrayList
        )
        # プッシュするドキュメントのプライマリキーフィールド。
        pkField = "id"
        # デフォルトのランタイムパラメーターを使用してリクエストを送信します。
        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()

Go

package main
import (
    "fmt"
    "github.com/alibabacloud-go/tea/tea"
    ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)
func main() {
    // リクエスト用のクライアントインスタンスを作成します。
    config := &ha3engine.Config{
        // API エンドポイント。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
        // ユーザー名。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        AccessUserName: tea.String("username"),
        // パスワード。[インスタンス詳細] ページの [API エンドポイント] セクションで変更できます。
        AccessPassWord: tea.String("password"),
    }
    // リクエストを送信するクライアントを初期化します。
    client, _clientErr := ha3engine.NewClient(config)
    // クライアントの初期化中にエラーが発生した場合、_clientErr が返され、エラーメッセージが出力されます。
    if _clientErr != nil {
        fmt.Println(_clientErr)
        return
    }
    deleteDoc(client)
}
func deleteDoc(client *ha3engine.Client) {
    pushDocumentsRequestModel := &ha3engine.PushDocumentsRequest{}
    // ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
    tableName := "<instance_id>_<table_name>"
    // プッシュするドキュメントのプライマリキーフィールド。
    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)
    // メソッドを呼び出してリクエストを送信します。
    response, _requestErr := client.PushDocuments(tea.String(tableName), tea.String(keyField), pushDocumentsRequestModel)
    // リクエストの送信中にエラーが発生した場合、_requestErr が返され、エラーメッセージが出力されます。
    if _requestErr != nil {
        fmt.Println(_requestErr)
        return
    }
    // レスポンスの内容を出力します。
    fmt.Println(response)
}

非同期 Java

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 {
    /**
     * OpenSearch Vector Search Edition のクライアント。
     */
    private AsyncClient client;
    @Before
    public void clientInit() {
        // インスタンスのユーザー名とパスワードを設定します。[インスタンス詳細] ページの [API エンドポイント] セクションで確認できます。
        AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");
        // 非同期クライアントを初期化します。
        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 {
            // ドキュメントをプッシュするテーブルの名前。フォーマットは `_` です。
            String tableName = "<instance_id>_<table_name>";
            // プッシュするドキュメントのプライマリキーフィールド。
            String pkField = "<field_pk>";
            // これはドキュメントプッシュの外部構造で、1 つ以上のドキュメント操作を含めることができます。
            ArrayList<Map<String, ?>> documents = new ArrayList<>();
            // ドキュメントを削除します。
            Map<String, Object> deleteDocument = new HashMap<>();
            Map<String, Object> deleteDocumentFields = new HashMap<>();
            // 削除するドキュメントのプライマリキーを指定します。
            //  フィールドは pkField パラメーターと一致している必要があります。
            deleteDocumentFields.put("<field_pk>", "<field_pk_value>");
            // ドキュメントの内容を deleteDocument 構造体に追加します。
            deleteDocument.put("fields", deleteDocumentFields);
            // ドキュメントを削除するコマンドは `delete` です。
            deleteDocument.put("cmd", "delete");
            documents.add(deleteDocument);
            // データをプッシュします。
            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));
        }
    }
}

補足情報

  • リクエストに対するレスポンスについては、「データの更新」をご参照ください。

  • go get github.com/aliyun/alibabacloud-ha3-go-sdk コマンドを使用して Git の依存関係をプルしないでください。バージョンを指定する必要があります。これは、OpenSearch Vector Search Edition と OpenSearch Retrieval Engine Edition のタグが同じ GitHub リポジトリにあるためです。お使いのインスタンスのバージョンに対応する依存関係をプルする必要があります。