二级索引

更新时间:
复制 MD 格式

通过命令行工具创建和管理二级索引,实现按属性列快速查询数据。

前提条件

  • 已完成命令行工具的安装和访问凭证配置。具体操作,请参见命令行工具

  • 已创建数据表和预定义列,且数据表的最大版本数(max versions)必须为1。具体操作,请参见数据表操作

创建二级索引

为数据表创建全局或本地二级索引

create_index -t <tableName> -n <indexName> -i <indexType> --pk <primaryKeyName> --attr <definedColumn>

参数

必填

说明

-t,--table

数据表名称。已通过use选定数据表时可省略。

-n,--name

二级索引名称。

-i,--index_type

二级索引类型。取值:

  • global(默认):全局二级索引。以异步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,正常情况下同步延迟为毫秒级别。

  • local:本地二级索引。以同步方式将数据写入索引表中,当数据写入数据表后即可从索引表中查询到数据。

-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

数据表或索引表名称。已通过use选定表时可省略。

-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

导出范围的起始点和结束点,主键范围为左闭右开区间。

说明
  • --begin 值为 [null,null] 时,表示起始点为 [INF_MIN,INF_MIN],即各主键列从最小值开始。

  • --end 值为 [null,null] 时,表示结束点为 [INF_MAX,INF_MAX],即各主键列到最大值结束。

-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

数据表名称。已通过use选定数据表时可省略。

-i,--index

二级索引名称。

-y,--yes

确认删除。命令中必须带有此参数。

示例

  • 删除当前数据表的索引表 index0。

    drop_index -i index0 -y
  • 删除数据表 mytable 的索引表 index0。

    drop_index -t mytable -i index0 -y