このトピックでは、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 では、次のパラメーターを指定する必要があります:endpoint、instance_id、access_user_name、access_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 リポジトリにあるためです。お使いのインスタンスのバージョンに対応する依存関係をプルする必要があります。