全部產品
Search
文件中心

:資料推送 Demo

更新時間:Sep 04, 2024

本文將介紹通過向量檢索版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"
        }
    }
]