类似于TermQuery,但是TermsQuery可以指定多个查询关键词,查询匹配这些词的数据。多个查询关键词中只要有一个词精确匹配,该行数据就会被返回,等价于SQL中的In。
前提条件
参数
参数 | 说明 |
---|---|
query_type | 设置查询类型为TermsQuery。 |
field_name | 要匹配的字段。 |
terms | 多个查询关键词,即要匹配的值。 多个查询关键词中只要有一个词精确匹配,该行数据就会被返回。 |
table_name | 数据表名称。 |
index_name | 多元索引名称。 |
limit | 本次查询需要返回的最大数量。 如果只为了获取行数,无需获取具体数据,可以设置limit=0,即不返回任意一行数据。 |
get_total_count | 是否返回匹配的总行数,默认为False,表示不返回。 返回匹配的总行数会影响查询性能。 |
columns_To_get | 是否返回所有列,包含return_type和column_names设置。
|
示例
查询表中k列的值精确匹配'key000'、'key100'、'key888'、'key999'、'key908'或'key1000'中任意一个的数据。
- 5.2.1及之后版本使用5.2.1及之后的SDK版本时,默认的返回结果为SearchResponse对象,请求示例如下:
query = TermsQuery('k', ['key000', 'key100', 'key888', 'key999', 'key908', 'key1000']) search_response = client.search( table_name, index_name, SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) )
如果需要返回Tuple类型结果,您可以使用如下请求示例实现。query = TermsQuery('k', ['key000', 'key100', 'key888', 'key999', 'key908', 'key1000']) rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( table_name, index_name, SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response()
- 5.2.1之前版本
使用5.2.1之前的SDK版本时,默认的返回结果为Tuple类型,请求示例如下:
query = TermsQuery('k', ['key000', 'key100', 'key888', 'key999', 'key908', 'key1000']) rows, next_token, total_count, is_all_succeed = client.search( table_name, index_name, SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) )