全部產品
Search
文件中心

Tablestore:如何將多元索引 Search 介面查詢資料的 limit 提高到 1000

更新時間:Oct 13, 2024

為了提高使用多元索引 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,擷取多元索引中的所有屬性列。
//Table Store Java SDK 從 5.6.1 版本開始支援 returnAllColumnsFromIndex 參數。
ColumnsToGet columnsToGet = new ColumnsToGet();
columnsToGet.setReturnAllFromIndex(true);
searchRequest.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(searchRequest);