本文將介紹通過召回引擎版Java SDK客戶端將數據實時同步到召回引擎版的實例中,支持的更新操作有:add、delete。
add 操作示例
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入口 查看
config.setEndpoint("<instance_services_domain>");
// 實例名稱,可在實例詳情頁左上角查看,例:ha-cn-i7*****605
config.setInstanceId("<instance_id>");
// 用戶名,可在實例詳情頁>網絡信息 查看
config.setAccessUserName("<user_name>");
// 密碼,可在實例詳情頁>網絡信息 修改
config.setAccessPassWord("<user_password>");
Client client = new Client(config);
// 文檔推送的數據源配置名稱.可在實例管理>配置中心>數據源配置 查看
String tableName = "<instance_datasource_table_name>";
// 文檔推送的文檔主鍵字段.
String pkField = "<field_pk>";
try {
// 文檔推送外層結構, 可添加對文檔操作的結構體. 結構內支持一個或多個文檔操作內容.
ArrayList<Map<String, ?>> documents = new ArrayList<>();
// 添加文檔
Map<String, Object> add2Document = new HashMap<>();
Map<String, Object> add2DocumentFields = new HashMap<>();
// 插入文檔內容信息, keyValue 成對匹配.
// field_pk 字段需與 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>");
// 問天引擎支持的多值屬性類型,索引內配置為"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);
// 推送數據
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<String, Object> abc = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
}
}
}
結構展示:
[
{
"cmd":"add",
"fields":{
"id":"1",
"title":"This is the title",
"body":"This is the body",
"tags":[
1,
2,
3
]
}
}
]
delete 操作示例
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入口 查看
config.setEndpoint("<instance_services_domain>");
// 實例名稱,可在實例詳情頁左上角查看,例:ha-cn-i7*****605
config.setInstanceId("<instance_id>");
// 用戶名,可在實例詳情頁>網絡信息 查看
config.setAccessUserName("<user_name>");
// 密碼,可在實例詳情頁>網絡信息 修改
config.setAccessPassWord("<user_password>");
Client client = new Client(config);
// 文檔推送的數據源配置名稱.可在實例管理>配置中心>數據源配置 查看
String tableName = "<instance_datasource_table_name>";
// 文檔推送的文檔主鍵字段.
String pkField = "<field_pk>";
try {
// 文檔推送外層結構, 可添加對文檔操作的結構體. 結構內支持一個或多個文檔操作內容.
ArrayList<Map<String, ?>> documents = new ArrayList<>();
// 刪除文檔
Map<String, Object> delete2Document = new HashMap<>();
Map<String, Object> delete2DocumentFields = new HashMap<>();
// 插入文檔內容信息, keyValue 成對匹配.
// field_pk 字段需與 pkField 字段配置一致.
delete2DocumentFields.put("<field_pk>", "<field_pk_value>");
// 將文檔內容添如 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<String, Object> abc = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
}
}
}
結構展示:
[
{
"cmd":"delete",
"fields":{
"id":"3"
}
}
]
文檔內容是否對您有幫助?