說明
若調用本介面時Doc Id已存在,則等同於更新Doc;Doc Id不存在,則等同於插入Doc。
若調用本介面時不指定Doc Id,則等同於插入Doc,DashVector會自動產生Doc Id,並在返回結果中攜帶id資訊。
前提條件
介面定義
使用樣本
說明
需要使用您的api-key替換樣本中的YOUR_API_KEY、您的Cluster Endpoint替換樣本中的YOUR_CLUSTER_ENDPOINT,代碼才能正常運行。
本樣本需要參考建立Collection-使用樣本提前建立好名稱為quickstart
的Collection。
插入或更新Doc
插入或更新不帶有Id的Doc
插入或更新帶有Fields的Doc
Vector vector = Vector.builder().value(Arrays.asList(0.2f, 0.2f, 0.3f, 0.4f)).build();
Doc doc = Doc.builder()
.id("2")
.vector(vector)
.field("name", "zhangshan")
.field("age", 20)
.field("weight", 100f)
.field("anykey1", "String")
.field("anykey2", 1)
.field("anykey3", true)
.field("anykey4", 3.1415926f)
.build();
Response<List<DocOpResult>> response = collection.upsert(UpsertDocRequest.builder().doc(doc).build());
assert response.isSuccess()
批量插入或更新Doc
非同步插入或更新Doc
插入或更新帶有Sparse Vector的Doc
入參描述
使用UpsertDocRequestBuilder
構造UpsertDocRequest
對象,其可用方法如下:
方法 | 必填 | 預設值 | 描述 |
docs(List<Doc> docs) | 是 | - | 設定Doc列表 |
doc(Doc doc) | 追加Doc至Doc列表,可多次調用 |
partition(String partition) | 否 | default | 分區名稱 |
build() | - | - | 構造UpsertDocRequest 對象 |
使用DocBuilder
構造Doc
對象,其可用方法如下:
方法 | 選項 | 預設值 | 描述 |
id(String id) | 否 | - | 主鍵 |
vector(Vector vector) | 是 | - | 向量資料 |
sparseVector(Map(Integer, Float)) | 否 | - | 稀疏向量 |
fields(Map<String, Object>) | 否 | - | 設定Fields |
field(String key, Object value) | 追加Field至Fields,可多次調用 |
build() | - | - | 構造Doc 對象 |
說明
Doc對象的fields參數,可自由設定“任意”的KeyValue資料,Key必須為String
類型,Value必須為String, Integer, Boolean or Float
。
當Key在建立Collection時預先定義過,則Value的類型必須為預定義時的類型
當Key未在建立Collection時預先定義過,則Value的類型可為String, Integer, Boolean or Float
是否預先定義Fields,可參考Schema Free。
出參描述
說明
返回結果為Response<List<DocOpResult>>
對象,Response<List<DocOpResult>>
對象中可擷取本次操作結果資訊,如下表所示。
方法 | 類型 | 描述 | 樣本 |
getCode() | int | 傳回值,參考返回狀態代碼說明 | 0 |
getMessage() | String | 返回訊息 | success |
getRequestId() | String | 請求唯一id | 19215409-ea66-4db9-8764-26ce2eb5bb99 |
getOutput() | List<DocOpResult> | 返回插入或更新Doc的結果 | |
isSuccess() | Boolean | 判斷請求是否成功 | true |