如果实际业务中要用到非主键列查询、多条件组合查询等多种查询功能,您可以通过控制台为数据表创建多元索引,然后使用多元索引查询数据。
前提条件
已创建数据表,且数据表的最大版本数(max Versions)必须为1,数据生命周期(Time to Live)必须满足如下条件中的任意一个。具体操作,请参见数据表操作。
数据表的数据生命周期为-1(数据永不过期)。
数据表的数据生命周期不为-1时,数据表为禁止更新状态(即是否允许更新为否)。
注意事项
步骤一:创建多元索引
创建多元索引用于加速数据查询。创建多元索引时,您需要将要查询的字段添加到多元索引中,您还可以配置多元索引的路由键、数据生命周期和预排序的高级选项。
进入索引管理页签。
登录表格存储控制台。
在页面上方,选择资源组和地域。
在概览页面,单击实例名称或在操作列单击实例管理。
在实例详情页签的数据表列表区域,单击数据表名称或在操作列单击索引管理。
在索引管理页签,单击创建多元索引。
在创建索引对话框,创建多元索引。
系统默认会自动生成索引名,可根据需要设置索引名。
选择Schema生成方式。
如果需要配置数据生命周期、路由键、索引预排序等选项,请打开高级选项开关,并根据下表说明配置参数。
参数
说明
路由键
自定义路由字段。可以选择部分主键列作为路由字段,在进行索引数据写入时,表格存储会根据路由字段的值计算索引数据的分布位置,路由字段的值相同的记录会被索引到相同的数据分区中。
数据生命周期
多元索引中数据的保存时间,单位为秒。默认值为-1,表示数据永不过期。
数据生命周期的取值最低为86400秒(一天),也可设置为-1(永不过期)。同时多元索引的TTL值必须小于或等于数据表的TTL值。
如果需要系统自动清理多元索引中的历史数据,您可以配置数据生命周期为指定时间。当数据的保存时间超过设置的数据生命周期时,系统会自动清理超过数据生命周期的数据。
预排序
多元索引默认按照设置的索引预排序方式进行排序,用于确定数据的默认返回顺序。
索引预排序只支持按照主键排序和按照字段值排序两种方式。如果未自定义预排序,则默认为主键排序,您可以根据实际查询场景指定预排序方式。
重要含有Nested类型字段的多元索引不支持索引预排序。
单击确定。
多元索引创建完成后,在索引列表的操作列,单击索引详情,可查看索引表的索引基本信息、索引计量、路由键、索引字段和预排序等信息。
步骤二:查询数据
使用多元索引查询数据时,请根据实际查询场景选择合适的查询类型。查询数据时支持配置要返回的列以及返回数据的排序方式。
多元索引支持在控制台使用的查询类型包括精确查询、范围查询、前缀查询、匹配查询、通配符查询、短语匹配查询、列存在性查询、多词精确查询、多条件组合查询、地理位置查询(只能对地理位置字段使用)和嵌套类型查询(只能对嵌套类型字段使用)。
进入索引管理页签。
登录表格存储控制台。
在页面上方,选择资源组和地域。
在概览页面,单击实例名称或在操作列单击实例管理。
在实例详情页签的数据表列表区域,单击数据表名称或在操作列单击索引管理。
在索引管理页签,单击目标多元索引操作列的搜索。
在查询数据对话框,查询数据。
系统默认返回所有列,如需显示指定属性列,关闭获取所有列并输入需要返回的属性列,多个属性列之间用半角逗号(,)隔开。
说明系统默认会返回数据表的主键列。
选择索引字段,单击添加,并设置索引字段的查询类型和值。
查询类型
说明
采用完整精确匹配的方式查询表中的数据,类似于字符串匹配。对于Text(分词字符串)类型字段,只要分词后有词条可以精确匹配即可。
根据范围条件查询表中的数据。对于Text类型字段,只要分词后的词条中有词条满足范围条件即可。
根据前缀条件查询表中的数据。对于Text类型字段,只要分词后的词条中有词条满足前缀条件即可。
用近似匹配的方式查询表中的数据。对Text类型的列值和查询关键词会先按照设置好的分词器做切分,然后按照切分好后的词去查询。
通配符查询中要匹配的值可以是一个带有通配符的字符串。
目前支持星号(*)和问号(?)两种通配符。要匹配的值中可以用星号(*)代表任意字符序列或者用问号(?)代表任意单个字符,且支持以星号(*)或问号(?)开头。
类似于匹配查询,但是分词后多个词的位置关系会被考虑,只有分词后的多个词在行数据中以同样的顺序和位置存在时,才表示行数据满足查询条件。
如果查询列的分词类型为模糊分词,则使用短语匹配查询可以实现比通配符查询更快的模糊查询。
也叫NULL查询或者空值查询,一般用于判断稀疏数据中某一行的某一列是否存在,例如查询所有数据中address列不为空的行。
如果需要查询某一列为空,则选择操作符为Not且字段的查询类型为列存在性查询。
类似于精确查询,但是多词精确查询可以指定多个查询关键词,查询匹配这些词的数据。多个查询关键词中只要有一个词精确匹配,该行数据就会被返回,等价于SQL中的In。
查询条件包含一个或者多个子查询条件,根据子查询条件来判断一行数据是否满足查询条件。
每个子查询条件可以是控制台中支持配置的任意一种查询类型。
配置时需要根据实际选择关系操作符为And、Or或Not。
地理位置查询
地理位置查询包括距离查询、矩形查询和多边形查询三种查询方式。只有当所选字段的数据类型为地理位置时才能使用地理位置查询。
查询嵌套类型字段中子行的数据。只有当所选字段的数据类型为嵌套类型时才能使用嵌套类型查询。
选择嵌套类型字段后,需要选择子列并配置子列的查询类型和值。
向量检索使用数值向量进行近似最近邻查询。只有当所选字段的数据类型为向量类型时才能使用向量检索。
选择向量类型字段后,需要输入要查询的向量和topK值。
系统默认关闭排序功能,如需根据索引字段对返回结果进行排序,打开是否排序后,根据需要添加索引字段并配置排序方式。
单击确定。
符合查询条件的数据会显示在索引管理页签中。
附录:管理多元索引
创建多元索引后,请根据需要执行相应操作。
操作 | 说明 |
查看索引详情 | 查看多元索引的索引基本信息、索引计量、路由键、索引字段和预排序等信息。
|
修改多元索引Schema | 如果要在多元索引中新增、更新或者删除索引列,您可以使用动态修改schema功能实现。具体操作,请参见动态修改schema。 |
修改多元索引生命周期 | 如果希望系统自动清理多元索引中的历史数据或者延长多元索引数据的保存时间,您可以修改多元索引的数据生命周期。
|
删除多元索引 | 如果不再需要多元索引加速数据查询时,您可以删除多元索引。 重要 多元索引删除后不能恢复,如需再次使用多元索引请重新创建。
|
常见问题
相关文档
您还可以通过命令行工具和各语言SDK使用多元索引。具体操作,请参见通过命令行工具使用多元索引和通过SDK使用多元索引。
如果要在不修改数据表的存储结构和数据的情况下,对新字段新数据类型的查询,您可以使用虚拟列功能实现。具体操作,请参见虚拟列。