通过命令行工具创建和管理二级索引,实现按属性列快速查询数据。
前提条件
创建二级索引
为数据表创建全局或本地二级索引。
create_index -t <tableName> -n <indexName> -i <indexType> --pk <primaryKeyName> --attr <definedColumn>
|
参数 |
必填 |
说明 |
|
-t,--table |
否 |
数据表名称。已通过 |
|
-n,--name |
是 |
二级索引名称。 |
|
-i,--index_type |
否 |
二级索引类型。取值:
|
|
-k,--pk |
是 |
索引表的索引列,为数据表主键和预定义列的组合,多列以逗号分隔。使用本地二级索引时,索引表的第一个主键列必须与数据表的第一个主键列相同。 |
|
-a,--attr |
是 |
索引表的属性列,为数据表的预定义列的组合,多列以逗号分隔。 |
|
-b,--without_base_data |
否 |
构建二级索引时不包括数据表中的存量数据。默认包含存量数据。 |
示例
-
为数据表 mytable 创建全局二级索引 index0(包含存量数据)。
create_index -t mytable -n index0 -i global --pk uid,pid -a name,col0 -
为数据表 mytable 创建全局二级索引 index1(不包含存量数据)。
create_index -t mytable -n index1 -i global --pk uid,pid -a name,col0 -b -
为数据表 mytable 创建本地二级索引 index2。
create_index -t mytable -n index2 -i local --pk uid,name -a col0,col1
使用索引表
选定索引表,后续的查询和导出操作在该表上执行。
use --wc -t <indexName>
|
参数 |
必填 |
说明 |
|
--wc |
否 |
表示操作的表为数据表或索引表。 |
|
-t,--table |
是 |
索引表名称。 |
示例
使用索引表 index0。
use -t index0
查看索引信息
通过desc命令查看数据表及其二级索引信息。
desc -t <tableName>
|
参数 |
必填 |
说明 |
|
-t,--table |
否 |
数据表或索引表名称。已通过 |
|
-f,--print_format |
否 |
输出格式。取值为 json(默认)或 table。 |
|
-o,--output |
否 |
输出表信息到本地 JSON 文件。 |
示例
-
查看当前表的信息。
desc -
将表信息保存到本地文件。
desc -o /tmp/describe_table_meta.json
读取数据
根据主键读取索引表中一行数据。
如果读取的数据行不存在,则返回结果为空。
get --pk '<pk_values>'
|
参数 |
必填 |
说明 |
|
-k,--pk |
是 |
索引表主键的值,以 JSON 数组表示。设置的主键个数和类型必须和索引表的主键个数和类型一致。 |
|
-c,--columns |
否 |
读取的列集合,列名可以是主键列或属性列,多列以逗号分隔。不设置则返回整行数据。 |
|
--max_version |
否 |
最多读取的版本数。 |
|
--time_range_start |
否 |
读取版本号范围内的数据。time_range_start 和 time_range_end 分别表示起始时间戳和结束时间戳,范围为左闭右开区间。 |
|
--time_range_end |
否 |
|
|
--time_range_specific |
否 |
读取特定版本号的数据。 |
|
-o,--output |
否 |
输出查询结果到本地 JSON 文件。 |
示例
读取索引表中主键值为 "86" 和 6771 的行数据。
get --pk '["86", 6771]'
扫描数据
扫描获取索引表中所有数据或指定行数的数据。
scan --limit <n>
|
参数 |
必填 |
说明 |
|
--limit |
否 |
本次扫描返回的最大行数。不设置则扫描整表所有数据。 |
示例
扫描获取索引表中最多 10 行数据。
scan --limit 10
导出数据
导出索引表中的数据到本地 JSON 文件。
scan -o /localpath/filename.json
|
参数 |
必填 |
说明 |
|
-c,--columns |
否 |
导出的列集合,列名可以是主键列或属性列,多列以逗号分隔。不设置则导出整行数据。 |
|
--max_version |
否 |
最多导出的版本数。 |
|
--time_range_start |
否 |
导出版本号范围内的数据。time_range_start 和 time_range_end 分别表示起始时间戳和结束时间戳,范围为左闭右开区间。 |
|
--time_range_end |
否 |
|
|
--time_range_specific |
否 |
导出特定版本号的数据。 |
|
--backward |
否 |
导出数据按照主键降序排列。 |
|
-o,--output |
是 |
导出数据到指定的本地文件路径。 |
|
-l,--limit |
否 |
本次导出最多返回的行数。 |
|
-b,--begin |
否 |
导出范围的起始点和结束点,主键范围为左闭右开区间。 说明
|
|
-e,--end |
否 |
示例
-
导出索引表中全部数据到本地文件。
scan -o /tmp/mydata.json -
导出 uid 和 name 列的数据。
scan -o /tmp/mydata.json -c uid,name -
导出指定主键范围内的数据。
scan -o /tmp/mydata.json -b '["86", 6771]' -e '["86", 6775]'
删除二级索引
删除不需要的索引表。
drop_index -t <tableName> -i <indexName> -y
|
参数 |
必填 |
说明 |
|
-t,--table |
否 |
数据表名称。已通过 |
|
-i,--index |
是 |
二级索引名称。 |
|
-y,--yes |
是 |
确认删除。命令中必须带有此参数。 |
示例
-
删除当前数据表的索引表 index0。
drop_index -i index0 -y -
删除数据表 mytable 的索引表 index0。
drop_index -t mytable -i index0 -y