Index 操作
更新时间:2025-01-14
创建索引
功能介绍
为指定表和指定字段新建索引,当前仅支持新建向量索引。
请求示例
import java.util.Arrays;
import com.baidu.mochow.auth.Credentials;
import com.baidu.mochow.client.ClientConfiguration;
import com.baidu.mochow.client.MochowClient;
import com.baidu.mochow.model.CreateIndexRequest;
import com.baidu.mochow.model.entity.HNSWParams;
import com.baidu.mochow.model.entity.SecondaryIndex;
import com.baidu.mochow.model.entity.VectorIndex;
import com.baidu.mochow.model.enums.IndexType;
import com.baidu.mochow.model.enums.MetricType;
public class Main {
public static void main(String[] args) {
String account = "root";
String apiKey = "*********";
String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setCredentials(new Credentials(account, apiKey));
clientConfiguration.setEndpoint(endpoint);
MochowClient mochowClient = new MochowClient(clientConfiguration);
String databaseName = "test";
String tableName = "test";
CreateIndexRequest createIndexRequest = CreateIndexRequest.builder()
.database(databaseName)
.table(tableName)
.indexes(Arrays.asList(
new SecondaryIndex("book_name_idx", "bookName"),
VectorIndex.builder()
.indexName("vector_idx")
.indexType(IndexType.HNSW)
.fieldName("vector")
.params(new HNSWParams(32, 200))
.metricType(MetricType.L2)
.autoBuild(false).build()
))
.build();
mochowClient.createIndex(createIndexRequest);
}
}
相关类说明
CreateIndexRequest
创建索引请求,用于向量数据库创建索引,拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明
import com.baidu.mochow.model.CreateIndexRequest; //导入包
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
database | String | 是 | 建索引的库名 |
table | String | 是 | 建索引的表名 |
indexes | List<IndexField> | 是 | 插入的记录列表 |
IndexField
拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明。为VectorIndex和SecondaryIndex的基类,正常情况下不使用
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
indexName | String | 是 | 索引的名字 |
field | String | 是 | 索引作用于的字段名称 |
indexType | IndexType | 是 | 插入的记录列表 |
metricType | MetricType | 否 | 向量之间距离度量算法类型。取值如下: 注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确 |
params | IndexParams | 否 | 向量索引构建参数 |
autoBuild | Boolean | 否 | 是否有自动构建索引策略 |
autoBuildPolicy | AutoBuildPolicy | 否 | 自动构建索引策略参数 periodical,周期性构建索引。 rowCountIncrement,根据tablet行增长数自动构建索引。 timing,定时构建索引 |
state | IndexState | 否 | 索引状态,,建索引时不需要使用。取值如下: |
SecondaryIndex
使用构造函数传入索引名称和对应的字段名称即可
SecondaryIndex(String indexName, String fieldName)
VectorIndex
使用构造函数传入对应参数即可,对应参数也拥有对应的builder构造函数
public VectorIndex(String indexName, String fieldName, IndexType indexType, IndexState state,MetricType metricType, IndexParams params, Boolean autoBuild, AutoBuildPolicy autoBuildPolicy)
删除向量索引
功能介绍
删除指定索引,当前不支持删除构建中的向量索引。
请求示例
import com.baidu.mochow.auth.Credentials;
import com.baidu.mochow.client.ClientConfiguration;
import com.baidu.mochow.client.MochowClient;
public class Main {
public static void main(String[] args) {
String account = "root";
String apiKey = "*********";
String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setCredentials(new Credentials(account, apiKey));
clientConfiguration.setEndpoint(endpoint);
MochowClient mochowClient = new MochowClient(clientConfiguration);
String databaseName = "test";
String tableName = "test";
mochowClient.dropIndex(databaseName, tableName, "test_index");
}
}
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
databaseName | String | 是 | 库名 |
tableName | String | 是 | 表名 |
indexName | String | 是 | 索引名 |
重建向量索引
功能介绍
重建指定索引,当前仅支持重建向量索引。
请求示例
请求示例
import com.baidu.mochow.auth.Credentials;
import com.baidu.mochow.client.ClientConfiguration;
import com.baidu.mochow.client.MochowClient;
public class Main {
public static void main(String[] args) {
String account = "root";
String apiKey = "*********";
String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setCredentials(new Credentials(account, apiKey));
clientConfiguration.setEndpoint(endpoint);
MochowClient mochowClient = new MochowClient(clientConfiguration);
String databaseName = "test";
String tableName = "test";
mochowClient.rebuildIndex(databaseName, tableName, "test_index");
}
}
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
databaseName | String | 是 | 库名 |
tableName | String | 是 | 表名 |
indexName | String | 是 | 索引名 |
查询索引详情
功能介绍
查询指定索引的详情。
请求示例
import com.baidu.mochow.auth.Credentials;
import com.baidu.mochow.client.ClientConfiguration;
import com.baidu.mochow.client.MochowClient;
import com.baidu.mochow.model.DescribeIndexResponse;
import com.baidu.mochow.util.JsonUtils;
public class Main {
public static void main(String[] args) {
String account = "root";
String apiKey = "*********";
String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setCredentials(new Credentials(account, apiKey));
clientConfiguration.setEndpoint(endpoint);
MochowClient mochowClient = new MochowClient(clientConfiguration);
String databaseName = "test";
String tableName = "test";
DescribeIndexResponse response = mochowClient.describeIndex(databaseName, tableName, "test_index");
System.out.printf("Describe table response: %s\n", JsonUtils.toJsonString(response));
}
}
请求参数
参数 | 类型 | 是否必填 | 参数含义 |
---|---|---|---|
databaseName | String | 是 | 库名 |
tableName | String | 是 | 表名 |
indexName | String | 是 | 索引名 |
DescribeIndexResponse
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
indexField | IndexField | 是 | 索引详细信息 |
IndexField
拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明。为VectorIndex和SecondaryIndex的基类,正常情况下不使用
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
indexName | String | 是 | 索引的名字 |
field | String | 是 | 索引作用于的字段名称 |
indexType | IndexType | 是 | 插入的记录列表 |
metricType | MetricType | 否 | 向量之间距离度量算法类型。取值如下: 注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确 |
params | IndexParams | 否 | 向量索引构建参数 |
autoBuild | Boolean | 否 | 是否有自动构建索引策略 |
autoBuildPolicy | AutoBuildPolicy | 否 | 自动构建索引策略参数 periodical,周期性构建索引。 rowCountIncrement,根据tablet行增长数自动构建索引。 timing,定时构建索引 |
state | IndexState | 否 | 索引状态,,建索引时不需要使用。取值如下: |
修改索引
功能介绍
修改向量索引信息,目前只支持修改autoBuild属性。
请求示例
import com.baidu.mochow.auth.Credentials;
import com.baidu.mochow.client.ClientConfiguration;
import com.baidu.mochow.client.MochowClient;
import com.baidu.mochow.model.ModifyIndexRequest;
import com.baidu.mochow.model.entity.HNSWParams;
import com.baidu.mochow.model.entity.VectorIndex;
import com.baidu.mochow.model.enums.IndexType;
import com.baidu.mochow.model.enums.MetricType;
public class Main {
public static void main(String[] args) {
String account = "root";
String apiKey = "*********";
String endpoint = "*.*.*.*:*"; // example: 127.0.0.1:5287
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setCredentials(new Credentials(account, apiKey));
clientConfiguration.setEndpoint(endpoint);
MochowClient mochowClient = new MochowClient(clientConfiguration);
String databaseName = "test";
String tableName = "test";
ModifyIndexRequest modifyIndexRequest = ModifyIndexRequest.builder()
.database(databaseName)
.table(tableName)
.index(VectorIndex.builder()
.indexName("vector_idx")
.indexType(IndexType.HNSW)
.fieldName("vector")
.params(new HNSWParams(32, 200))
.metricType(MetricType.L2)
.autoBuild(false).build()
)
.build();
mochowClient.modifyIndex(modifyIndexRequest);
}
}
请求参数
参数 | 类型 | 是否必填 | 参数含义 |
---|---|---|---|
databaseName | String | 是 | 库名 |
tableName | String | 是 | 表名 |
index | IndexField | 是 | 索引详细信息 |
IndexField
拥有constructor、getter、setter以及builder等通用方法,通用方法详情可以参考通用说明。为VectorIndex和SecondaryIndex的基类,正常情况下不使用
成员名 | 类型 | 是否必填 | 成员含义 |
---|---|---|---|
indexName | String | 是 | 索引的名字 |
field | String | 是 | 索引作用于的字段名称 |
indexType | IndexType | 是 | 插入的记录列表 |
metricType | MetricType | 否 | 向量之间距离度量算法类型。取值如下: 注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确 |
params | IndexParams | 否 | 向量索引构建参数 |
autoBuild | Boolean | 否 | 是否有自动构建索引策略 |
autoBuildPolicy | AutoBuildPolicy | 否 | 自动构建索引策略参数 periodical,周期性构建索引。 rowCountIncrement,根据tablet行增长数自动构建索引。 timing,定时构建索引 |
state | IndexState | 否 | 索引状态,,建索引时不需要使用。取值如下: |