表空间操作
http://master_server代表master服务,$db_name是创建的库名, $space_name是创建的表空间名
创建表空间
- curl -XPUT -H "content-type: application/json" -d'
- {
- "name": "space1",
- "partition_num": 1,
- "replica_num": 1,
- "engine": {
- "name": "gamma",
- "index_size": 70000,
- "max_size": 10000000,
- "nprobe": 10,
- "metric_type": "InnerProduct",
- "ncentroids": 256,
- "nsubvector": 32
- },
- "properties": {
- "field1": {
- "type": "keyword"
- },
- "field2": {
- "type": "integer"
- },
- "field3": {
- "type": "float",
- "index": "true"
- },
- "field4": {
- "type": "string",
- "array": true,
- "index": "true"
- },
- "field5": {
- "type": "integer",
- "array": false,
- "index": "true"
- },
- "field6": {
- "type": "vector",
- "dimension": 128
- },
- "field7": {
- "type": "vector",
- "dimension": 256,
- "store_type": "Mmap",
- "store_param": {
- "cache_size": 2000
- }
- }
- }
- }
- ' http://master_server/space/$db_name/_create
参数说明:
字段标识 | 字段名称 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
name | 空间名称 | string | 是 | |
partition_num | 分片数量 | int | 是 | |
replica_num | 副本数量 | int | 是 | |
engine | 引擎配置 | json | 是 | 引擎配置 |
properties | 空间配置 | json | 是 | 定义表字段及类型 |
1、name 不能为空,不能以数字或下划线开头,尽量不使用特殊字符等。
2、partition_num 指定表空间数据分片数量,不同的分片可分布在不同的机器,来避免单台机器的资源限制。
3、replica_num 副本数量,建议设置成3,表示每个分片数据有两个备份,保证数据高可用。
engine配置:
字段标识 | 字段名称 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
name | 引擎名称 | string | 是 | 目前固定为gamma |
index_size | 分片索引阀值 | int | 否 | |
max_size | 分片最大记录数量 | int | 否 | |
nprobe | 搜索桶数量 | int | 否 | 默认10 |
metric_type | 计算方式 | string | 否 | InnerProduct:内积 L2:欧式距离, 默认L2 |
ncentroids | int | 否 | 默认256 | |
nsubvector | PQ拆分子向量大小 | int | 否 | 默认64, 必须是4的倍数 |
1、index_size 指定每个分片的记录数量达到多少开始创建索引,不指定则不创建索引。
2、max_size 指定每个分片最多存储的记录数量,防止服务器内存占用过多。
3、nprobe 指定在索引中搜索的桶的数量,不能大于ncentroids的值。
4、metric_type 指定计算方式,内积或欧式距离。
5、ncentroids 指定建索引时分桶的数量。
6、nsubvector PQ拆分子向量大小。
properties配置:
1、表空间结构定义字段支持的类型(即type的值)有4种: keyword,integer,float,vector(keyword等价于string)。
2、keyword类型的字段支持index、array属性,index定义是否创建索引,array指定是否允许多个值。
3、integer,float类型的字段支持index属性,index设为true的字段支持使用数值范围过滤查询。
4、vector 类型字段为特征字段,一个表空间中支持多个特征字段,vector类型的字段支持的属性如下:
字段标识 | 字段名称 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
dimension | 特征维数 | int | 是 | 值上述nsubvector值的整数倍 |
store_type | 特征存储类型 | string | 否 | 支持Mmap和RocksDB, 默认Mmap |
store_param | 存储参数设置 | json | 否 | 设置数据占用内存大小 |
model_id | 特征插件模型 | string | 否 | 使用特征插件服务时指定 |
5、dimension 定义type是vector的字段,指定特征维数大小。
6、store_param 定义该特征字段存储占用内存空间大小,默认大小是engine max_size参数值特征维数每个特征值占用空间大小。若store_type设置为RocksDB, 则改值代表RocksDB读缓冲大小。多个特征字段之间该参数相互不影响,所有特征字段cache_size总大小建议不超过机器内存的70%。示例:128维float特征, max_size=1000000, 则cache_size默认值是10000001284B。
查看表空间
- curl -XGET http://master_server/space/$db_name/$space_name
删除表空间
- curl -XDELETE http://master_server/space/$db_name/$space_name