El valor máximo del parámetro limit en la operación Search depende del origen de lectura de los datos. Si todas las columnas que desea devolver están almacenadas en el índice de búsqueda, limit puede alcanzar 1000. Si alguna columna debe obtenerse de la tabla de datos, limit tiene un límite de 100.
Solución
La posibilidad de establecer limit en 1000 depende de una condición: ¿están todas las columnas que desea devolver almacenadas en el índice de búsqueda?
|
Origen de datos |
Límite máximo |
|
Solo índice de búsqueda |
1000 |
|
Tabla de datos (cualquier columna fuera del índice) |
100 |
Para establecer limit en 1000, configure el parámetro ColumnsToGet de modo que todas las columnas devueltas provengan del índice de búsqueda. Dispone de dos métodos:
Método 1: Establezca
ColumnsToGet.columnscon las columnas de atributos específicas que existen en el índice de búsqueda.Método 2: Establezca
ColumnsToGet.ReturnAllColumnsFromIndexentruepara devolver todas las columnas de atributos almacenadas en el índice de búsqueda. Esta opción requiere Tablestore SDK for Java V5.6.1 o posterior.
Si ninguna de sus índices de búsqueda actuales contiene todas las columnas necesarias, agregue las columnas faltantes a un índice existente o inclúyalas al crear uno nuevo. Consulte Create a search index y Dynamically modify the schema of a search index.
Ejemplos
Los ejemplos a continuación utilizan Tablestore SDK for Java. Ambos métodos establecen limit en 1000 al garantizar que todas las columnas devueltas provengan del índice de búsqueda. El procedimiento es el mismo en los SDK de otros lenguajes.
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(new MatchAllQuery());
searchQuery.setLimit(1000);
SearchRequest searchRequest = new SearchRequest(tableName, indexName, searchQuery);
// Method 1: Return specific attribute columns that exist in the search index.
ColumnsToGet columnsToGet1 = new ColumnsToGet();
columnsToGet1.setReturnAll(false);
// Specify the names of columns stored in the search index.
columnsToGet1.setColumns(Arrays.asList("field_1", "field_2", "field_3"));
searchRequest.setColumnsToGet(columnsToGet1);
// Method 2: Return all attribute columns stored in the search index.
// Requires Tablestore SDK for Java V5.6.1 or later.
ColumnsToGet columnsToGet2 = new ColumnsToGet();
columnsToGet2.setReturnAllFromIndex(true);
searchRequest.setColumnsToGet(columnsToGet2);
SearchResponse response = client.search(searchRequest);