如何將多元索引 Search 介面查詢資料的 limit 提高到 1000
更新時間:
Copy as MD
多元索引 Search 介面的 limit 上限取決於資料讀取來源:如果所需返回列均儲存在多元索引中,limit 最高可設為 1000;如果任意一列需要反查資料表,limit 上限為 100。
實現方式
limit 能否提高到 1000,取決於一個核心條件:所有需要返回的列是否都儲存在多元索引中?
|
資料讀取來源 |
limit 最大值 |
|
僅從多元索引讀取 |
1000 |
|
需反查資料表(有列不在索引中) |
100 |
通過 ColumnsToGet 參數控制返回列的來源,確保所有列均來自多元索引,即可將 limit 設為 1000。有以下兩種方式:
方式一:在
ColumnsToGet.columns中指定多元索引中已有的屬性列名稱。方式二:將
ColumnsToGet.ReturnAllColumnsFromIndex設為true,返回多元索引中的所有屬性列。需要Table Store 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,擷取多元索引中的所有屬性列。
//Table Store Java SDK 從 5.6.1 版本開始支援 returnAllColumnsFromIndex 參數。
ColumnsToGet columnsToGet = new ColumnsToGet();
columnsToGet.setReturnAllFromIndex(true);
searchRequest.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(searchRequest);
该文章对您有帮助吗?