Index 操作
更新时间:2024-10-16
创建索引
功能介绍
为指定表和指定字段新建索引,当前仅支持新建向量索引。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.schema import SecondaryIndex, VectorIndex, HNSWParams, AutoBuildPeriodical
from pymochow.model.enum import IndexType, MetricType
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
indexes = []
indexes.append(
VectorIndex(
index_name="vector_idx",
index_type=IndexType.HNSW,
field="vector",
metric_type=MetricType.L2,
params=HNSWParams(m=32, efconstruction=200),
auto_build=True,
auto_build_index_policy=AutoBuildPeriodical(5000, "2026-01-01 12:00:00")
)
)
table = db.table("book_vector")
table.create_indexes(indexes)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
indexes | List<Index> | 是 | 索引列表。 |
Index参数
请参见建表操作的索引参数描述。
删除索引
功能介绍
删除指定索引,当前不支持删除构建中的向量索引。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
table.drop_index("vector_idx")
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
index_name | String | 是 | 指定索引的名称。 |
重建索引
功能介绍
重建指定索引,当前仅支持重建向量索引。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
table.rebuild_index(index_name="vector_idx")
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
index_name | String | 是 | 向量索引的名称。 |
查询索引详情
功能介绍
查询指定索引的详情。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
index = table.describe_index(index_name="vector_idx")
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
index_name | String | 是 | 指定索引的名称。 |
返回参数
参数 | 参数类型 | 参数含义 |
---|---|---|
index | Index | Index对象 |
Index参数
参数 | 参数类型 | 参数含义 |
---|---|---|
vector_index | VectorIndex | 向量索引对象。 |
secondary_index | SecondaryIndex | 标量二级索引对象。 |
VectorIndex参数
参数 | 参数类型 | 参数含义 |
---|---|---|
index_name | String | 索引名称。 |
index_type | IndexType | 索引类型。 |
field | String | 索引作用于的字段名称。 |
metric_type | MetricType | 向量之间距离度量算法类型。取值如下: 注:当使用COSINE距离时,用户需要自行对相关向量进行归一化操作,未经归一化的向量将导致search结果不准确 |
autoBuild | Bool | 是否有自动构建索引策略。 |
autoBuildPolicy | AutoBuildPolicy | 自动构建索引策略参数 periodical,周期性构建索引。 rowCountIncrement,根据tablet行增长数自动构建索引。 timing,定时构建索引 |
params | Params | 向量索引构建参数。 |
state | IndexState | 索引状态。取值如下: |
SecondaryIndex参数
参数 | 参数类型 | 参数含义 |
---|---|---|
index_name | String | 索引名称 |
field | String | 索引作用于的字段名称。 |
修改索引
功能介绍
修改向量索引信息,目前只支持修改autoBuild属性。
请求示例
import pymochow
import time
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.schema import Schema, Field, SecondaryIndex, VectorIndex, HNSWParams, AutoBuildTiming, AutoBuildPeriodical, AutoBuildRowCountIncrement
from pymochow.model.enum import FieldType, IndexType, MetricType, ServerErrCode
from pymochow.model.enum import TableState, IndexState
from pymochow.model.table import Partition, Row, AnnSearch, HNSWSearchParams
if __name__ == "__main__":
account = 'root'
api_key = '$您的API密钥'
endpoint = '$您的实例端点' #例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
database = 'book'
table_name = 'book_segments'
db = client.create_database(database)
fields = []
fields.append(Field("id", FieldType.STRING, primary_key=True,
partition_key=True, auto_increment=False, not_null=True))
fields.append(Field("bookName", FieldType.STRING, not_null=True))
fields.append(Field("vector", FieldType.FLOAT_VECTOR, not_null=True, dimension=3))
db.create_table(
table_name=table_name,
replication=2,
partition=Partition(partition_num=3),
schema=Schema(fields=fields, indexes=[])
)
while True:
time.sleep(2)
table = db.describe_table(table_name)
if table.state == TableState.NORMAL:
break
table = db.table('book_segments')
indexes = []
vindex = VectorIndex(index_name="vector_idx",
index_type=IndexType.HNSW,
field="vector", metric_type=MetricType.L2,
params=HNSWParams(m=32, efconstruction=200))
indexes.append(vindex)
table.create_indexes(indexes)
table.modify_index(index_name="vector_idx", auto_build=True,
auto_build_index_policy=AutoBuildTiming("2024-06-06 00:00:00"))
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
index_name | String | 是 | 索引列表。 |
auto_build | Boolean | 是 | 是否自动构建索引,默认为False。 |
auto_build_index_policy | AutoBuildPolicy | 否 | 自动构建索引策略,当前支持如下策略: |