You need to enable JavaScript to run this app.
文档中心
对象存储

对象存储

复制全文
下载 pdf
向量
ListVectors(TOS Vectors Java SDK)
复制全文
下载 pdf
ListVectors(TOS Vectors Java SDK)
ListVectors 接口用于列举指定空间下的向量集合,本文介绍如何通过 TOS Vectors Java SDK 的 listVectors 接口获取向量列表,支持分页与过滤条件。​
注意事项​
  • 为了防止密钥泄露,本文示例代码需要从环境变量中读取 Access Key ID 和 Secret Access Key。因此使用 SDK 前,您需要配置长期访问凭证,详细介绍,请参见 配置长期访问凭证。​
  • TOS Vectors Java SDK 支持使用临时访问凭证;也支持配置超时机制、重试策略等多种机制,您可以根据业务需求灵活设置,提升应用安全性,详细介绍,请参见 常见配置场景。​
权限说明​
主账号默认拥有全部权限,但是 IAM 用户默认没有任何权限。如果您需要使用 IAM 用户执行 ListVectors 操作,主账号需通过 IAM策略和桶策略为该 IAM 用户授予以下权限:tosvectors:ListVectors​
代码示例​
列举向量基本用法​
​
// 列举向量基本用法​
import com.volcengine.tos.TOSVectorsClientBuilder;​
import com.volcengine.tos.TOSVectors;​
import com.volcengine.tos.TosClientException;​
import com.volcengine.tos.TosServerException;​
import com.volcengine.tos.model.vectors.ListVectorsInput;​
import com.volcengine.tos.model.vectors.ListVectorsOutput;​
import com.volcengine.tos.model.vectors.Vector;​
​
public class ListVectorsExample {​
public static void main(String[] args) {​
String endpoint = "Provide your endpoint";​
String region = "Provide your region";​
String accessKey = System.getenv("TOS_ACCESS_KEY");​
String secretKey = System.getenv("TOS_SECRET_KEY");​
String accountID = System.getenv("TOS_ACCOUNT_ID");​
​
// 填写向量桶名称和索引名称​
String vectorBucketName = "Provide your vector bucket name";​
String indexName = "testindex";​
​
// 初始化客户端​
TOSVectors client = new TOSVectorsClientBuilder().build(region, endpoint, accessKey, secretKey);​
​
try {​
// 创建列举向量请求,设置基本参数​
ListVectorsInput input = ListVectorsInput.builder()​
.vectorBucketName(vectorBucketName)​
.accountId(accountID)​
.indexName(indexName)​
.returnData(true)​
.returnMetadata(true)​
.build();​
​
// 调用列举向量接口​
ListVectorsOutput output = client.listVectors(input);​
​
// 处理返回结果​
System.out.println("列举向量成功");​
System.out.println("RequestID: " + output.getRequestInfo().getRequestId());​
System.out.println("StatusCode: " + output.getRequestInfo().getStatusCode());​
​
// 打印向量列表信息​
if (output.getVectors() != null && !output.getVectors().isEmpty()) {​
System.out.println("向量数量: " + output.getVectors().size());​
for (Vector vector : output.getVectors()) {​
System.out.println("向量Key: " + vector.getKey());​
if (vector.getData() != null) {​
System.out.println("向量数据维度: " + vector.getData().getFloat32().length);​
}​
if (vector.getMetadata() != null) {​
System.out.println("向量元数据: " + vector.getMetadata());​
}​
}​
} else {​
System.out.println("未找到向量");​
}​
​
} catch (TosClientException e) {​
// 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送​
System.out.println("操作失败");​
System.out.println("Message: " + e.getMessage());​
if (e.getCause() != null) {​
e.getCause().printStackTrace();​
}​
} catch (TosServerException e) {​
// 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息​
System.out.println("操作失败");​
System.out.println("StatusCode: " + e.getStatusCode());​
System.out.println("Code: " + e.getCode());​
System.out.println("Message: " + e.getMessage());​
System.out.println("RequestID: " + e.getRequestID());​
} catch (Throwable t) {​
// 作为兜底捕获其他异常,一般不会执行到这里​
System.out.println("操作失败");​
System.out.println("unexpected exception, message: " + t.getMessage());​
}​
}​
}​
​
分页列举向量​
​
// 分页列举向量​
import com.volcengine.tos.TOSVectorsClientBuilder;​
import com.volcengine.tos.TOSVectors;​
import com.volcengine.tos.TosClientException;​
import com.volcengine.tos.TosServerException;​
import com.volcengine.tos.model.vectors.ListVectorsInput;​
import com.volcengine.tos.model.vectors.ListVectorsOutput;​
import com.volcengine.tos.model.vectors.Vector;​
import java.util.ArrayList;​
import java.util.List;​
​
public class ListVectorsExample2 {​
public static void main(String[] args) {​
String endpoint = "Provide your endpoint";​
String region = "Provide your region";​
String accessKey = System.getenv("TOS_ACCESS_KEY");​
String secretKey = System.getenv("TOS_SECRET_KEY");​
String accountID = System.getenv("TOS_ACCOUNT_ID");​
​
// 填写向量桶名称和索引名称​
String vectorBucketName = 'Provide your vector bucket name';​
String indexName = "testindex";​
​
// 初始化客户端​
TOSVectors client = new TOSVectorsClientBuilder().build(region, endpoint, accessKey, secretKey);​
​
try {​
// 分页参数设置​
int pageSize = 2; // 每页显示的向量数量​
String nextToken = null; // 分页令牌​
List<String> allVectorKeys = new ArrayList<>(); // 存储所有向量的key​
int totalVectors = 0; // 总计向量数量​
​
System.out.println("开始分页列举向量...");​
​
// 循环列举直到没有更多数据​
int pageNum = 1;​
do {​
// 创建分页列举向量请求​
ListVectorsInput input = ListVectorsInput.builder()​
.vectorBucketName(vectorBucketName)​
.accountId(accountID)​
.indexName(indexName)​
.maxResults(pageSize) // 设置每页数量​
.nextToken(nextToken) // 设置分页令牌​
.returnData(false) // 不返回向量数据,只返回key​
.returnMetadata(false) // 不返回元数据​
.build();​
​
// 调用列举向量接口​
ListVectorsOutput output = client.listVectors(input);​
​
System.out.println("\n第 " + pageNum + " 页:");​
System.out.println("RequestID: " + output.getRequestInfo().getRequestId());​
System.out.println("StatusCode: " + output.getRequestInfo().getStatusCode());​
​
// 处理当前页的向量​
if (output.getVectors() != null && !output.getVectors().isEmpty()) {​
int currentPageSize = output.getVectors().size();​
totalVectors += currentPageSize;​
System.out.println("当前页向量数量: " + currentPageSize);​
​
// 收集所有向量的key​
for (Vector vector : output.getVectors()) {​
allVectorKeys.add(vector.getKey());​
System.out.println(" 向量Key: " + vector.getKey());​
}​
} else {​
System.out.println("当前页无向量数据");​
}​
​
// 获取下一页的分页令牌​
nextToken = output.getNextToken();​
pageNum++;​
​
// 如果nextToken为null,表示已经列举完所有数据​
if (nextToken == null || nextToken.isEmpty()) {​
System.out.println("\n已列举完所有向量数据");​
break;​
}​
} while (true);​
​
// 打印总结信息​
System.out.println("\n列举完成总结:");​
System.out.println("总向量数量: " + totalVectors);​
System.out.println("列举页数: " + (pageNum - 1));​
System.out.println("所有向量Key数量: " + allVectorKeys.size());​
​
// 演示:获取第一页并包含详细数据​
System.out.println("\n演示:获取第一页详细数据...");​
ListVectorsInput detailedInput = ListVectorsInput.builder()​
.vectorBucketName(vectorBucketName)​
.accountId(accountID)​
.indexName(indexName)​
.maxResults(5) // 只获取前5个​
.returnData(true) // 返回向量数据​
.returnMetadata(true) // 返回元数据​
.build();​
​
ListVectorsOutput detailedOutput = client.listVectors(detailedInput);​
if (detailedOutput.getVectors() != null && !detailedOutput.getVectors().isEmpty()) {​
System.out.println("详细数据 - 前 " + detailedOutput.getVectors().size() + " 个向量:");​
for (int i = 0; i < detailedOutput.getVectors().size(); i++) {​
Vector vector = detailedOutput.getVectors().get(i);​
System.out.println(" 向量 " + (i + 1) + ":");​
System.out.println(" Key: " + vector.getKey());​
if (vector.getData() != null && vector.getData().getFloat32() != null) {​
System.out.println(" 数据维度: " + vector.getData().getFloat32().length);​
}​
if (vector.getMetadata() != null) {​
System.out.println(" 元数据: " + vector.getMetadata());​
}​
}​
}​
​
} catch (TosClientException e) {​
// 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送​
System.out.println("操作失败");​
System.out.println("Message: " + e.getMessage());​
if (e.getCause() != null) {​
e.getCause().printStackTrace();​
}​
} catch (TosServerException e) {​
// 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息​
System.out.println("操作失败");​
System.out.println("StatusCode: " + e.getStatusCode());​
System.out.println("Code: " + e.getCode());​
System.out.println("Message: " + e.getMessage());​
System.out.println("RequestID: " + e.getRequestID());​
} catch (Throwable t) {​
// 作为兜底捕获其他异常,一般不会执行到这里​
System.out.println("操作失败");​
System.out.println("unexpected exception, message: " + t.getMessage());​
}​
}​
}​
​
​
最近更新时间:2026.08.10 17:30:46
这个页面对您有帮助吗?
有用
有用
无用
无用