通配符查询中,要匹配的值可以是一个带有通配符的字符串,目前支持星号(*)和问号(?)两种通配符。要匹配的值中可以用星号(*)代表任意字符序列,或者用问号(?)代表任意单个字符,且支持以星号(*)或问号(?)开头。例如查询“table*e”,可以匹配到“tablestore”。
如果查询的模式为
*word*
(等价于SQL中的
WHERE field_a LIKE '%word%'
),则您可以使用性能更好的模糊查询,具体实现方法请参见
模糊查询
。该方案不会随数据量变大而导致性能下降。
如果要实现NOT LIKE功能,则WildcardQuery需要和BoolQuery中的mustNotQueries结合使用。
注意事项
带有通配符的字符串长度不能超过32个字符。
接口
通配符查询的接口为 Search 或者 ParallelScan ,具体的Query类型为 WildcardQuery 。
参数
参数 |
描述 |
fieldName |
列名称。 |
value |
带有通配符的字符串,字符串长度不能超过32个字符。 |
query |
设置查询类型为WildcardQuery。 |
getTotalCount |
是否返回匹配的总行数,默认为false,表示不返回。 返回匹配的总行数会影响查询性能。 |
weight |
查询权重,用于全文检索场景中的score排序。查询时指定列的算分权重,值越大,结果中分数的值会越大。取值范围为正浮点数。 使用此参数不会影响返回的结果数,只会影响返回的结果中的分数。 |
tableName |
数据表名称。 |
indexName |
多元索引名称。 |
columnsToGet |
是否返回所有列,包含returnAll和columns设置。 returnAll默认为false,表示不返回所有列,此时可以通过columns指定返回的列;如果未通过columns指定返回的列,则只返回主键列。 当设置returnAll为true时,表示返回所有列。 |
使用方式
您可以使用控制台、命令行工具或者SDK进行通配符查询。进行通配符查询之前,您需要完成如下准备工作。
-
使用阿里云账号或者使用具有表格存储操作权限的RAM用户进行操作。如果需要为RAM用户授权表格存储操作权限,请参见 通过RAM Policy为RAM用户授权 进行配置。
使用SDK方式和命令行工具方式进行操作时,如果当前无可用AccessKey,则需要为阿里云账号或者RAM用户创建AccessKey。具体操作,请参见 创建AccessKey 。
-
已创建数据表。具体操作,请参见 数据表操作 。
-
已为数据表创建多元索引。具体操作,请参见 创建多元索引 。
-
使用SDK方式进行操作时,还需要完成初始化Client。具体操作,请参见 初始化OTSClient 。
-
使用命令行工具方式进行操作前,还需要完成下载并启动命令行工具,然后配置接入实例信息并选择要操作的表。具体操作,请参见 下载命令行工具 、 启动并配置 和 数据表操作 。
计费说明
使用VCU模式(原预留模式)时,使用多元索引查询数据会消耗VCU的计算资源。使用CU模式(原按量模式)时,使用多元索引查询数据会消耗读吞吐量。更多信息,请参见 多元索引计量计费 。
常见问题
相关文档
-
多元索引查询类型包括 精确查询 、 多词精确查询 、 全匹配查询 、 匹配查询 、 短语匹配查询 、 前缀查询 、 范围查询 、 通配符查询 、 模糊查询 、 多条件组合查询 、 地理位置查询 、 嵌套类型查询 、 向量检索 和 列存在性查询 ,您可以选择合适的查询类型进行多维度数据查询。
如果要对结果集进行排序或者翻页,您可以使用排序和翻页功能来实现。具体操作,请参见 排序和翻页 。
如果要按照某一列对结果集做折叠,使对应类型的数据在结果展示中只出现一次,您可以使用折叠(去重)功能来实现。具体操作,请参见 折叠(去重) 。
-
如果要进行数据分析,例如求最值、求和、统计行数等,您可以使用Search接口的统计聚合功能或者SQL查询来实现。具体操作,请参见 统计聚合 和 SQL查询 。
-
如果要快速导出数据,而不关心整个结果集的顺序时,您可以使用ParallelScan接口和ComputeSplits接口实现多并发导出数据。具体操作,请参见 并发导出数据 。