前提條件
已初始化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) )