前提条件
已初始化OTSClient。具体操作,请参见初始化Tablestore Client。
已在数据表上创建多元索引。具体操作,请参见创建多元索引。
参数
|
参数 |
说明 |
|
query_type |
查询类型。设置为 TermsQuery。 |
|
field_name |
要查询的列名。 |
|
terms |
匹配的关键词列表。 列值与列表中任意一个关键词精确匹配,该行数据即被返回。 |
|
table_name |
数据表名称。 |
|
index_name |
多元索引名称。 |
|
limit |
本次查询返回的最大行数。 仅需获取匹配行数而不需要实际数据时,设置 limit=0。 |
|
get_total_count |
是否返回匹配的总行数,默认值为 False。 设置为 True 会降低查询性能。 |
|
columns_To_get |
指定返回的列,包含 return_type 和 column_names 两个子参数。
|
示例
以下示例查询 Col_Keyword 列的值精确匹配 'key000'、'key100'、'key888'、'key999'、'key908' 或 'key1000' 之一的行。
-
5.2.1 及之后版本
SDK 5.2.1 及之后版本默认返回 SearchResponse 对象。
query = TermsQuery('Col_Keyword', ['key000', 'key100', 'key888', 'key999', 'key908', 'key1000']) search_response = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ) print('request_id : %s' % search_response.request_id) print('is_all_succeed : %s' % search_response.is_all_succeed) print('total_count : %s' % search_response.total_count) print('rows : %s' % search_response.rows) # 深翻页时,使用 next_token 翻页,翻页深度无限制。 # all_rows = [] # next_token = None # # 第一页 # search_response = client.search( # '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', # SearchQuery(query, next_token=next_token, limit=100, get_total_count=True), # columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL)) # all_rows.extend(search_response.rows) # # # 后续翻页 # while search_response.next_token: # search_response = client.search( # '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', # SearchQuery(query, next_token=search_response.next_token, limit=100, get_total_count=True), # columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL)) # all_rows.extend(search_response.rows) # print('Total rows:%s' % len(all_rows))如需以 Tuple 类型获取返回结果,可调用 v1_response():
query = TermsQuery('Col_Keyword', ['key000', 'key100', 'key888', 'key999', 'key908', 'key1000']) rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response() -
5.2.1 之前版本
SDK 5.2.1 之前版本默认以 Tuple 类型返回结果。
query = TermsQuery('Col_Keyword', ['key000', 'key100', 'key888', 'key999', 'key908', 'key1000']) rows, next_token, total_count, is_all_succeed = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) )
常见问题
相关文档
该文章对您有帮助吗?