赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 开发参考
  5. 命令行工具
  6. 宽表模型
  7. 二级索引

二级索引

  • 宽表模型
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

当您需要使用不同属性作为查询条件来执行数据查询时,您可以将这些属性作为二级索引的主键列,以实现按照属性快速查询数据的需求。创建二级索引后,您只需向数据表中写入数据,然后根据索引表进行查询。本文介绍如何通过Tablestore CLI创建二级索引、查看索引表信息、使用索引表查询数据、导出数据以及删除索引表。

前提条件

  • 已创建数据表,且数据表的最大版本数(max Versions)必须为1。更多信息,请参见数据表操作。

  • 已为数据表创建预定义列。更多信息,请参见数据表操作。

创建二级索引

说明

二级索引包括全局二级索引和本地二级索引。更多信息,请参见二级索引简介。

命令格式

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

配置项说明请参见下表。

配置项

是否必填

示例值

说明

-t,--table

否

mytable

数据表名称。

-n,--name

是

index0

二级索引名称。

-i,--index_type

否

global

二级索引类型。取值范围如下:

  • global(默认):全局二级索引。

    使用全局索引时,表格存储以异步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,正常情况下同步延迟达到毫秒级别。

  • local:本地二级索引。

    使用本地二级索引时,表格存储以同步方式将数据表中被索引的列和主键列的数据自动同步到索引表中,当数据写入数据表后,即可从索引表中查询到数据。

-k,--pk

是

uid,pid

索引表的索引列,索引列为数据表主键和预定义列的组合。

使用本地二级索引时,索引表的第一个主键列必须与数据表的第一个主键列相同。

-a,--attr

是

col0,col1

索引表的属性列,索引表属性列为数据表的预定义列的组合。

-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 -k uid,name -a col0,col1

使用表

选择需要进行操作的表,用于后续表操作或者数据操作。

命令格式

use --wc -t <tableName>

配置项说明请参见下表,

配置项

是否必填

示例值

说明

--wc

否

不涉及

表示操作的表为数据表或者索引表。

-t,--table

是

index0

索引表名称。

示例

使用索引表index0。

use -t index0

查看二级索引信息

查看表的信息。您也可以将表信息保存到本地JSON格式的文件中。

命令格式

desc -t <tableName> -o /localpath/filename.json

配置项说明请参见下表。

配置项

是否必填

示例值

说明

-t,--table

否

index0

数据表或者索引表名称。

-f,--print_format

否

json

表信息的输出格式。取值范围包括json(默认)和table。

-o,--output

否

/tmp/describe_table_meta.json

输出表信息到本地JSON格式的文件中。

示例

以下示例用于查看当前表的信息。

desc

以下示例用于查询当前表的信息并将表信息保存到本地文件describe_table_meta.json中。

desc -o  /tmp/describe_table_meta.json

使用二级索引查询数据

读取单行数据

读取表中的数据。您也可以将读取的数据导出到本地JSON格式的文件中。

说明

如果读取的数据行不存在,则返回结果为空。

命令格式

get --pk '[primaryKeyValue,primaryKeyValue]'

配置项说明请参见下表。

配置项

是否必填

示例值

说明

-p,--pk

是

["86",6771]

数据表主键的值,以数组表示。

重要

设置的主键个数和类型必须和数据表的主键个数和类型一致。

--columns

否

name,uid

读取的列集合,列名可以是主键列或属性列。如果不设置返回的列名,则返回整行数据。

--max_version

否

1

最多读取的版本数。

--time_range_start

否

1626860469000

读取版本号范围内的数据。time_range_start和time_range_end分别表示起始时间戳和结束时间戳,范围为左闭右开区间。

--time_range_end

否

1626865270000

--time_range_specific

否

1626862870000

读取特定版本号的数据。

-o, --output

否

/tmp/querydata.json

输出查询结果到本地JSON格式的文件中。

示例

以下示例用于读取第一主键列值为“86”,第二主键列值为6771的行数据。

get --pk '["86",6771]'

扫描数据

扫描获取整表中所有数据或者获取最多指定个数的行数据。

命令格式

scan --limit limit

配置项说明请见下表。

配置项

是否必填

示例值

说明

--limit

否

10

本次扫描返回的最大行数,可不配置。如果不设置此项,则表示扫描整表中所有数据。

示例

以下示例用于扫描获取数据表中的最多10行数据。

scan --limit 10

导出数据

导出表中数据到本地JSON文件中。

命令格式

scan -o /localpath/filename.json -c attributeColumnName,attributeColumnName,attributeColumnName

配置项说明请参见下表。

配置项

是否必填

示例值

说明

-c, --columns

是

uid,name

导出的列集合,列名可以是主键列或属性列。如果不设置列名,则导出整行数据。

--max_version

否

1

最多导出的版本数。

--time_range_start

否

1626865596000

导出版本号范围内的数据。time_range_start和time_range_end分别表示起始时间戳和结束时间戳,范围为前闭后开区间。

--time_range_end

否

1626869196000

--time_range_specific

否

1626867396000

导出特定版本号的数据。

--backward

否

不涉及

导出数据按照主键降序排列。

-o, --output

是

/tmp/mydata.json

输出查询结果到本地指定路径的JSON格式文件中。

-l,--limit

否

10

本次查询最多返回的行数。

-b,--begin

否

'["86", 6771]'

导出范围起始点和结束点之间的数据。主键范围为前闭后开的区间。

-e,--end

否

'["86", 6775]'

示例

  • 示例1

    以下示例用于导出当前表中全部数据到本地文件mydata.json。

    scan -o /tmp/mydata.json
  • 示例2

    以下示例用于导出当前表中uid和name列的数据到本地文件mydata.json。

    scan -o /tmp/mydata.json -c uid,name
  • 示例3

    以下示例用于导出当前表中在指定主键范围内的数据到本地文件mydata.json。其中起始点的第一主键列为“86”,第二主键列为6771,结束点的第一主键列为“86”,第二主键列为6775。

    scan -o D:\\0testreport\\myh3.json -b '["86", 6771]' -e '["86", 6775]'

删除二级索引

删除不需要的索引表。

命令格式

drop_index -t <tableName> -i <indexName> -y

配置项说明请参见下表,

配置项

是否必填

示例值

说明

-t,--table

否

mytable

数据表名称。

-i,--index

是

index0

二级索引名称。

-y,--yes

是

不涉及

显示确认信息。命令中必须带有此配置项。

示例

以下示例用于删除当前数据表的索引表index0。

drop_index -i index0 -y

以下示例用于删除数据表mytable的索引表index0。

drop_index -t mytable -i index0 -y
相关文章

数据表操作 2025-04-22 14:19

宽表模型使用数据表存储数据。本文介绍了如何通过表格存储的命令行工具进行数据表操作,您可以使用命令行创建表、使用表、列出表名称、更新表、查看表信息以及删除表。 创建表

数据操作 2025-04-22 14:19

创建数据表后,您可以通过命令行工具在数据表中插入新数据、更新一行数据、读取数据、删除一行数据、扫描数据以及导入导出数据。 插入新数据 在

二级索引 2025-04-22 14:19

当您需要使用不同属性作为查询条件来执行数据查询时,您可以将这些属性作为二级索引的主键列,以实现按照属性快速查询数据的需求。创建二级索引后,您只需向数据表中写入数据,然后根据索引表进行查询。本文介绍如何通过Tablestore CLI创建二级索引、查看索引表信息、使用索引表查询数据、导出数据以及删除索

多元索引 2025-04-22 14:19

创建数据表后,您可以通过Tablestore CLI创建多元索引、查看多元索引列表、查看多元索引信息、使用多元索引查询数据以及删除多元索引。 创建多元索引

通道服务 2025-04-22 14:19

通道服务(Tunnel Service)是基于表格存储数据接口上的全增量一体化服务。通道服务提供了增量、全量、增量加全量三种类型的分布式数据实时消费通道。通过为数据表建立数据通道,您可以简单地实现对表中历史存量和新增数据的消费处理。

SQL查询 2025-04-22 14:19

进入SQL模式后,您可以使用SQL语句绑定表的映射关系、获取映射表列表、查看映射表信息、查询表数据以及删除映射表。 说明

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号