このトピックでは、OpenSearch Vector Search Edition Java SDK クライアントを使用して、OpenSearch Vector Search Edition インスタンスにデータをリアルタイムで同期する方法について説明します。追加、更新、削除の更新操作がサポートされています。
追加操作の例
import com.aliyun.ha3engine.Client;
import com.aliyun.ha3engine.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 {
Config config = new Config();
// インスタンスの名前。インスタンス名は、[インスタンスの詳細] ページの左上隅に表示されます。例: ha-cn-i7*****605。
config.setInstanceId("ha-cn-i7*****605");
// ユーザー名。ユーザー名は、[インスタンスの詳細] ページの [API エンドポイント] セクションに表示されます。
config.setAccessUserName("username");
// パスワード。パスワードは、[インスタンスの詳細] ページの [API エンドポイント] セクションで変更できます。
config.setAccessPassWord("password");
// インスタンスの API エンドポイント。API エンドポイントは、[インスタンスの詳細] ページの [API エンドポイント] セクションに表示されます。
config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
client = new Client(config);
}
@Test
public void add() throws Exception {
// ドキュメントをプッシュするテーブルの名前。
String tableName = "";
// データをプッシュするドキュメントのプライマリキー フィールド。
String pkField = "";
try {
// ドキュメントをプッシュするために使用される外部構造。構造には、1 つ以上のドキュメント操作を指定できます。
ArrayList> documents = new ArrayList<>();
// アップロードするドキュメント。
Map add2Document = new HashMap<>();
Map add2DocumentFields = new HashMap<>();
// ドキュメントの内容。キーと値はペアで一致させる必要があります。
// field_pk フィールドの値は、pkField フィールドの値と同じである必要があります。
add2DocumentFields.put("", "");
add2DocumentFields.put("", "");
add2DocumentFields.put("", "");
// コンテンツは、OpenSearch Vector Search Edition でサポートされている複数値属性タイプにすることができます。インデックステーブルを構成するときに、multi_value パラメーターを true に設定します。
ArrayList addDocumentMultiFields = new ArrayList<>();
addDocumentMultiFields.add("multi_value_1");
addDocumentMultiFields.add("multi_value_2");
add2DocumentFields.put("", addDocumentMultiFields);
// ドキュメントの内容を add2Document 構造に追加します。
add2Document.put("fields", add2DocumentFields);
// add コマンドを実行してドキュメントをアップロードします。
add2Document.put("cmd", "add");
documents.add(add2Document);
// データをプッシュします。
PushDocumentsRequestModel requestModel = new PushDocumentsRequestModel();
// デフォルトでは、データをプッシュするときに、システムはプライマリキー フィールドが存在するかどうかを確認します。チェックを無効にするには、X-Opensearch-Validate-Data リクエスト ヘッダーを false に設定します。
// requestModel.headers = new HashMap<>();
// requestModel.headers.put("X-Opensearch-Validate-Data", "false");
requestModel.setBody(documents);
PushDocumentsResponseModel responseModel = client.pushDocuments(tableName, pkField, requestModel);
String responseBody = responseModel.getBody();
System.out.println("result:" + responseBody);
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}構造の表示:
[
{
"cmd": "add",
"fields": {
"id": "1",
"title": "This is the title",
"body": "This is the body",
"tags" : [1, 2, 3]
}
}
]更新操作の例
package com.aliyun.ha3engine;
import com.aliyun.ha3engine.Client;
import com.aliyun.ha3engine.models.*;
import com.aliyun.tea.TeaException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author alibaba
*/
public class PushDoc {
public static void main(String[] args) throws Exception {
Config config = new Config();
// インスタンスの API エンドポイント。API エンドポイントは、[インスタンスの詳細] ページの [API エンドポイント] セクションに表示されます。
config.setEndpoint("");
// インスタンスの名前。インスタンス名は、[インスタンスの詳細] ページの左上隅に表示されます。例: ha-cn-i7*****605
config.setInstanceId("");
// ユーザー名。ユーザー名は、[インスタンスの詳細] ページの [API エンドポイント] セクションに表示されます。
config.setAccessUserName("");
// パスワード。パスワードは、[インスタンスの詳細] ページの [API エンドポイント] セクションで変更できます。
config.setAccessPassWord("");
Client client = new Client(config);
// データソース構成の名前。名前は、[インスタンス管理] > [構成センター] > [データソース構成] に表示されます。
String tableName = "";
// データをプッシュするドキュメントのプライマリキー フィールド。
String pkField = "";
try {
// ドキュメントをプッシュするために使用される外部構造。構造には、1 つ以上のドキュメント操作を指定できます。
ArrayList> documents = new ArrayList<>();
// 更新するドキュメント。
Map update2Document = new HashMap<>();
Map update2DocumentFields = new HashMap<>();
// ドキュメントの内容。キーと値はペアで一致させる必要があります。
// field_pk フィールドの値は、pkField フィールドの値と同じである必要があります。
update2DocumentFields.put("", "");
update2DocumentFields.put("", "");
update2DocumentFields.put("", "");
// コンテンツは、OpenSearch Vector Search Edition でサポートされている複数値属性タイプにすることができます。インデックステーブルを構成するときに、multi_value パラメーターを true に設定します。
ArrayList updateDocumentMultiFields = new ArrayList<>();
updateDocumentMultiFields.add("multi_value_1");
updateDocumentMultiFields.add("multi_value_2");
update2DocumentFields.put("", updateDocumentMultiFields);
// ドキュメントの内容を update2Document 構造に追加します。
update2Document.put("fields", update2DocumentFields);
// update コマンドを実行してドキュメントを更新します。
update2Document.put("cmd", "update");
documents.add(update2Document);
// データをプッシュします。
PushDocumentsRequestModel requestModel = new PushDocumentsRequestModel();
requestModel.setBody(documents);
PushDocumentsResponseModel responseModel = client.pushDocuments(tableName, pkField, requestModel);
String responseBody = responseModel.getBody();
System.out.println("result:" + responseBody);
} catch (TeaException e) {
System.out.println(e.getMessage());
Map abc = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
}
}
}構造の表示:
[
{
"cmd": "update_field",
"fields": {
"id": "2",
"title": "This is the new title"
}
}
]削除操作の例
package com.aliyun.ha3engine;
import com.aliyun.ha3engine.Client;
import com.aliyun.ha3engine.models.*;
import com.aliyun.tea.TeaException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author alibaba
*/
public class PushDoc {
public static void main(String[] args) throws Exception {
Config config = new Config();
// インスタンスの API エンドポイント。API エンドポイントは、[インスタンスの詳細] ページの [API エンドポイント] セクションに表示されます。
config.setEndpoint("");
// インスタンスの名前。インスタンス名は、[インスタンスの詳細] ページの左上隅に表示されます。例: ha-cn-i7*****605
config.setInstanceId("");
// ユーザー名。ユーザー名は、[インスタンスの詳細] ページの [API エンドポイント] セクションに表示されます。
config.setAccessUserName("");
// パスワード。パスワードは、[インスタンスの詳細] ページの [API エンドポイント] セクションで変更できます。
config.setAccessPassWord("");
Client client = new Client(config);
// データソース構成の名前。名前は、[インスタンス管理] > [構成センター] > [データソース構成] に表示されます。
String tableName = "";
// データをプッシュするドキュメントのプライマリキー フィールド。
String pkField = "";
try {
// ドキュメントをプッシュするために使用される外部構造。構造には、1 つ以上のドキュメント操作を指定できます。
ArrayList> documents = new ArrayList<>();
// 削除するドキュメント。
Map delete2Document = new HashMap<>();
Map delete2DocumentFields = new HashMap<>();
// ドキュメントの内容。キーと値はペアで一致させる必要があります。
// field_pk フィールドの値は、pkField フィールドの値と同じである必要があります。
delete2DocumentFields.put("", "");
// ドキュメントの内容を delete2Document 構造に追加します。
delete2Document.put("fields", delete2DocumentFields);
// delete コマンドを実行してドキュメントを削除します。
delete2Document.put("cmd", "delete");
documents.add(delete2Document);
// データをプッシュします。
PushDocumentsRequestModel requestModel = new PushDocumentsRequestModel();
requestModel.setBody(documents);
PushDocumentsResponseModel responseModel = client.pushDocuments(tableName, pkField, requestModel);
String responseBody = responseModel.getBody();
System.out.println("result:" + responseBody);
} catch (TeaException e) {
System.out.println(e.getMessage());
Map abc = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
}
}
}構造の表示:
[
{
"cmd":"delete",
"fields":{
"id":"3"
}
}
]