您的位置:首页 > 教育 > 培训 > 万户网络app_微信公众号开发文档_培训心得简短_惠州网站关键词排名

万户网络app_微信公众号开发文档_培训心得简短_惠州网站关键词排名

2025/2/22 16:35:39 来源:https://blog.csdn.net/qq_41362382/article/details/144455148  浏览:    关键词:万户网络app_微信公众号开发文档_培训心得简短_惠州网站关键词排名
万户网络app_微信公众号开发文档_培训心得简短_惠州网站关键词排名

本文介绍如何通过Java SDK更新Collection中已存在的Doc。

说明

  1. 若更新Doc时指定id不存在,则本次更新Doc操作无效

  2. 如只更新部分属性fields,其他未更新属性fields默认被置为null

  3. Java SDK 1.0.10版本后,更新Doc时vector变为非必填项

前提条件

  • 已创建Cluster:创建Cluster。

  • 已获得API-KEY:API-KEY管理。

  • 已安装最新版SDK:安装DashVector SDK。

接口定义

Java示例:

// class DashVectorCollection// 同步接口
public Response<List<DocOpResult>> update(UpdateDocRequest updateDocRequest);// 异步接口
public ListenableFuture<Response<List<DocOpResult>>> updateAsync(UpdateDocRequest updateDocRequest); 

使用示例

说明

  1. 需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

  2. 本示例需要参考新建Collection-使用示例提前创建好名称为quickstart的Collection。

更新Doc

Java示例:

import com.aliyun.dashvector.DashVectorClient;
import com.aliyun.dashvector.DashVectorCollection;
import com.aliyun.dashvector.common.DashVectorException;
import com.aliyun.dashvector.models.Doc;
import com.aliyun.dashvector.models.Vector;
import com.aliyun.dashvector.models.requests.UpdateDocRequest;
import com.aliyun.dashvector.models.responses.Response;import java.util.*;public class Main {public static void main(String[] args) throws DashVectorException {DashVectorClient client = new DashVectorClient("YOUR_API_KEY", "YOUR_CLUSTER_ENDPOINT");DashVectorCollection collection = client.get("quickstart");// 构建VectorVector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build();// 构建DocDoc doc = Doc.builder().id("1").vector(vector).build();// 更新DocResponse<List<DocOpResult>> response = collection.update(UpdateDocRequest.builder().doc(doc).build());// 判断更新Doc是否成功// assert response.isSuccess() }
}

更新带有Fields的Doc

Java示例:

// 构建Vector
Vector vector = Vector.builder().value(Arrays.asList(0.2f, 0.2f, 0.3f, 0.4f)).build();// 更新单条数据,并设置Fields Value
Doc doc = Doc.builder().id("2").vector(vector)// 设置创建Collection时预定义的Fields Value.field("name", "zhangshan").field("age", 20).field("weight", 100f)// 设置Schema-Free的Field & Value.field("anykey1", "String").field("anykey2", 1).field("anykey3", true).field("anykey4", 3.1415926f).build();// 更新Doc
Response<List<DocOpResult>> response = collection.update(UpdateDocRequest.builder().doc(doc).build());// 判断更新Doc是否成功
assert response.isSuccess()

批量更新Doc

Java示例:

// 通过UpdateDocRequest对象,批量更新10条Doc
List<Doc> docs = new ArrayList<>();
for (int i = 0; i < 10; i++) {docs.add(Doc.builder().id(Integer.toString(i+3)).vector(Vector.builder().value(Collections.nCopies(4, (float) i+3)).build()).build());
}UpdateDocRequest request = UpdateDocRequest.builder().docs(docs).build();
Response<List<DocOpResult>> response = collection.update(request);// 判断批量更新Doc是否成功
assert response.isSuccess();

异步更新Doc

Java示例:

// 异步批量更新10条数据
List<Doc> docs = new ArrayList<>();
for (int i = 0; i < 10; i++) {docs.add(Doc.builder().id(Integer.toString(i+13)).vector(Vector.builder().value(Collections.nCopies(4, (float) i+13)).build()).build());
}UpdateDocRequest request = UpdateDocRequest.builder().docs(docs).build();
ListenableFuture<Response<List<DocOpResult>>> response = collection.updateAsync(request);// 等待并获取异步update结果
Response<List<DocOpResult>> ret = response.get();

更新带有Sparse Vector的Doc

Java示例:

Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build();// 构建带有Sparse Vector的Doc
Doc doc = Doc.builder().id("28").sparseVector(new Map<Integer, Float>() {{put(1, 0.4f);put(10000, 0.6f);put(222222, 0.8f);}}).vector(vector).build();// 更新Doc
Response<List<DocOpResult>> response = collection.update(UpdateDocRequest.builder().doc(doc).build());

入参描述

使用UpdateDocRequestBuilder构造UpdateDocRequest对象,其可用方法如下:

方法

必填

默认值

描述

docs(List<Doc> docs)

-

设置Doc列表

doc(Doc doc)

追加Doc至Doc列表,可多次调用

partition(String partition)

default

分区名称

build()

-

-

构造UpdateDocRequest对象

使用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对象

说明

  1. Doc对象的fields参数,可自由设置“任意”的KeyValue数据,Key必须为String类型,Value必须为String, Integer, Boolean or Float

  • 当Key在创建Collection时预先定义过,则Value的类型必须为预定义时的类型
  • 当Key未在创建Collection时预先定义过,则Value的类型可为String, Integer, Boolean or Float

 2. 是否预先定义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的结果

getUsage()

RequestUsage

对Serverless实例(按量付费)集合的Doc更新请求,成功后返回实际消耗的写请求单元数

isSuccess()

Boolean

判断请求是否成功

true

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com