如何将多元索引 Search 接口查询数据的 limit 提高到 1000

为了提高使用多元索引 Search 接口单次查询的返回结果数,如果多元索引包含需要返回的所有列,limit 上限会自适应提高到 1000,您可以通过设置 limit 参数提高返回的结果数量。如果多元索引未包含需要返回的所有列,查询数据时需要反查数据表,limit 上限为 100。本文介绍了将多元索引 Search 接口查询数据的 limit 提高到 1000 的方法。

实现方式

通过多元索引的 Search 接口查询数据时,您可以使用 ColumnsToGet 参数设置需要返回哪些列,如果设置的列均在多元索引中,limit 上限会自适应提高到 1000。您可以通过在 ColumnsToGet 参数中指定多元索引中存在的列,或者设置 ReturnAllColumnsFromIndex 为 true 来确保返回的列均在多元索引中并通过设置 limit 的值来提高单次查询的返回结果数量。

当已存在的多元索引未包含所有要返回的列时,如果希望查询数据时的 limit 自适应提高到 1000,您可以通过重建多元索引时添加所有要返回的列到多元索引或者通过动态修改 schema 功能添加所有要返回的列到多元索引实现。具体操作,请参见创建多元索引动态修改 schema

示例

此处以 Java SDK 为例介绍如何设置 ColumnsToGet 参数,其他语言的 SDK 实现类似,只需修改 SearchRequest 中的 ColumnsToGet 参数即可。

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(new MatchAllQuery());
searchQuery.setLimit(1000);

SearchRequest searchRequest = new SearchRequest(tableName, indexName, searchQuery);

//方式一:在 ColumnsToGet 参数中设置 columns 参数为多元索引中的列,获取多元索引中的指定属性列。
ColumnsToGet columnsToGet = new ColumnsToGet();
columnsToGet.setReturnAll(false);
//设置为多元索引中的列名。
columnsToGet.setColumns(Arrays.asList("field_1", "field_2", "field_3"));  
searchRequest.setColumnsToGet(columnsToGet);

//方式二:在 ColumnsToGet 中设置 returnAllColumnsFromIndex 参数为 true,获取多元索引中的所有属性列。
//表格存储 Java SDK 从 5.6.1 版本开始支持 returnAllColumnsFromIndex 参数。
ColumnsToGet columnsToGet = new ColumnsToGet();
columnsToGet.setReturnAllFromIndex(true);
searchRequest.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(searchRequest);