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

更新时间:
复制为 MD 格式

多元索引 Search 接口的 limit 上限取决于数据读取来源:如果所需返回列均存储在多元索引中,limit 最高可设为 1000;如果任意一列需要反查数据表,limit 上限为 100。

实现方式

limit 能否提高到 1000,取决于一个核心条件:所有需要返回的列是否都存储在多元索引中?

数据读取来源

limit 最大值

仅从多元索引读取

1000

需反查数据表(有列不在索引中)

100

通过 ColumnsToGet 参数控制返回列的来源,确保所有列均来自多元索引,即可将 limit 设为 1000。有以下两种方式:

  • 方式一:在 ColumnsToGet.columns 中指定多元索引中已有的属性列名称。

  • 方式二:将 ColumnsToGet.ReturnAllColumnsFromIndex 设为 true,返回多元索引中的所有属性列。需要表格存储 Java SDK 5.6.1 及以上版本。

如果现有多元索引未包含所有需要返回的列,可通过重建多元索引时添加缺失列,或使用动态修改 schema 功能添加。具体操作,请参见创建多元索引动态修改 schema

示例

以下 Java SDK示例展示了两种方式如何通过控制返回列来源将 limit 设为 1000,其他语言SDK的实现方式相同。

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);