Todos los productos
Search
Centro de documentos

Tablestore:Collapse query results

Última actualización: Sep 03, 2026

Al consultar un índice de búsqueda con el Tablestore SDK for Java, puede colapsar los resultados por un campo específico para que solo se devuelva una fila por cada valor distinto del campo.

Requisitos previos

Instale Tablestore SDK for Java e inicialice un cliente.

Funcionamiento

El colapso de campos agrupa las filas coincidentes según el valor de un campo específico del índice de búsqueda y devuelve una fila representativa de cada grupo. El orden de clasificación efectivo determina la fila que se devuelve de cada grupo. Puede usar sorting and pagination para configurar el orden de clasificación. El colapso de campos solo modifica la forma en que se muestran los resultados de la consulta y no altera los datos de la tabla.

Importante
  • La clasificación y la agregación deben estar habilitadas para el campo de colapso. El campo debe ser de tipo Keyword, Long o Double, y no puede ser un arreglo.

  • Una consulta con colapso solo admite paginación basada en límite y desplazamiento. No se admite la paginación basada en token. La suma de limit y offset no puede exceder 100000.

  • Las agregaciones y las agrupaciones operan sobre los resultados coincidentes antes del colapso. El recuento total de filas también corresponde al número de filas coincidentes previas al colapso. No es posible obtener el número total de grupos después del colapso.

Llame a search para consultar datos y configure SearchQuery.collapse para especificar el campo de colapso.

SearchResponse search(SearchRequest request)

En el siguiente ejemplo se consultan todas las filas, se colapsan los resultados por el campo category y se ordenan las filas por el campo price en orden descendente. Se devuelve la fila con el precio más alto de cada categoría.

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(new MatchAllQuery());
searchQuery.setLimit(10);
searchQuery.setCollapse(new Collapse("category"));
searchQuery.setSort(new Sort(
        Arrays.asList(new FieldSort("price", SortOrder.DESC))));

SearchRequest.ColumnsToGet columnsToGet =
        new SearchRequest.ColumnsToGet();
columnsToGet.setColumns(Arrays.asList("category", "price"));

SearchRequest request =
        new SearchRequest("example_table", "example_index", searchQuery);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getRows());

Parámetros

Solicitud de consulta

El tipo de request es SearchRequest. En la siguiente tabla se describen sus parámetros.

Nombre

Tipo

Descripción

tableName (obligatorio)

String

Nombre de la tabla de datos.

indexName (obligatorio)

String

Nombre del índice de búsqueda.

searchQuery (obligatorio)

SearchQuery

Condición de consulta y configuración de colapso.

columnsToGet (opcional)

SearchRequest.ColumnsToGet

Columnas que se devolverán. Si no se configura este parámetro, solo se devuelven las columnas de clave principal.

timeoutInMillisecond (opcional)

int

Tiempo de espera de la consulta a nivel de solicitud, en milisegundos. Valor predeterminado: -1, lo que indica que no se configura un tiempo de espera de consulta independiente.

routingValues (opcional)

List<PrimaryKey>

Valores de clave principal de los campos de enrutamiento personalizados. No es necesario configurar este parámetro si no se utiliza enrutamiento personalizado.

Configuración de consulta

El tipo de request.searchQuery es SearchQuery. En la siguiente tabla se describen sus parámetros.

Nombre

Tipo

Descripción

query (obligatorio)

Query

Condición de consulta. Se admiten los tipos de consulta de índice de búsqueda.

collapse (obligatorio)

Collapse

Configuración de colapso.

offset (opcional)

Integer

Posición del grupo desde la cual comienza la consulta actual. Valor predeterminado: 0. La suma de este parámetro y limit no puede exceder 100000.

limit (opcional)

Integer

Número máximo de grupos que se devolverán. Valor predeterminado: 10. Si este parámetro es 0, no se devuelve ninguna fila. El valor máximo es 1000 si todas las columnas devueltas se leen del índice de búsqueda, o 100 si alguna columna devuelta debe leerse de la tabla de datos.

highlight (opcional)

Highlight

Configuración de resumen y resaltado. La devolución de resultados resaltados depende del tipo de consulta y de la configuración de campos del índice.

sort (opcional)

Sort

Orden de clasificación de los resultados, que determina la fila representativa devuelta de cada grupo y el orden de los grupos. Si no se configura este parámetro, se utiliza la clasificación del índice.

trackTotalCount (opcional)

int

Número máximo esperado de filas coincidentes que se contarán. Valor predeterminado: TRACK_TOTAL_COUNT_DISABLED, que deshabilita el recuento. Establezca el valor en TRACK_TOTAL_COUNT para contar todas las filas coincidentes antes del colapso. Un valor menor mejora el rendimiento de la consulta.

filter (opcional)

SearchFilter

Filtro aplicado a los resultados de query.

aggregationList (opcional)

List<Aggregation>

Configuraciones de agregación. Las agregaciones operan sobre los resultados coincidentes antes del colapso.

groupByList (opcional)

List<GroupBy>

Configuraciones de agrupación. Las agrupaciones operan sobre los resultados coincidentes antes del colapso.

token (opcional)

byte[]

Token de paginación. No configure este parámetro cuando utilice colapso de campos.

Configuración de colapso

El tipo de request.searchQuery.collapse es Collapse. En la siguiente tabla se describe su parámetro.

Nombre

Tipo

Descripción

fieldName (obligatorio)

String

Nombre del campo de colapso. La clasificación y la agregación deben estar habilitadas para el campo, y este debe ser de tipo Keyword, Long o Double, sin ser un arreglo.

Columnas a devolver

El tipo de request.columnsToGet es SearchRequest.ColumnsToGet. En la siguiente tabla se describen sus parámetros.

Nombre

Tipo

Descripción

columns (opcional)

List<String>

Nombres de las columnas de atributo que se devolverán. Configure este parámetro solo si tanto returnAll como returnAllFromIndex son false. Si no se configura este parámetro, solo se devuelven las columnas de clave principal.

returnAll (opcional)

boolean

Especifica si se deben devolver todas las columnas de atributo de la tabla de datos. Valor predeterminado: false.

returnAllFromIndex (opcional)

boolean

Especifica si se deben devolver todas las columnas de atributo almacenadas en el índice de búsqueda. Valor predeterminado: false. No establezca este parámetro y returnAll en true simultáneamente.

Respuesta

El método search devuelve SearchResponse. En la siguiente tabla se describen los campos relacionados con el colapso de campos.

Nombre

Tipo

Descripción

totalCount

long

Número de filas coincidentes antes del colapso. Llame a getTotalCount() para obtener el valor. Este valor depende de trackTotalCount y no indica el número de grupos después del colapso.

rows

List<Row>

Filas resultantes después del colapso. Llame a getRows() para obtener el valor. Se devuelve como máximo una fila por cada valor distinto del campo de colapso.

searchHits

List<SearchHit>

Coincidencias de búsqueda después del colapso. Llame a getSearchHits() para obtener el valor.

isAllSuccess

boolean

Indica si se consultaron todas las particiones del índice. Llame a isAllSuccess() para obtener el valor. Si este campo es false, la respuesta contiene resultados parciales.

aggregationResults

AggregationResults

Resultados de agregación calculados a partir de las filas coincidentes antes del colapso. Llame a getAggregationResults() para obtener el valor. Este campo se devuelve solo si se configura aggregationList.

groupByResults

GroupByResults

Resultados de agrupación calculados a partir de las filas coincidentes antes del colapso. Llame a getGroupByResults() para obtener el valor. Este campo se devuelve solo si se configura groupByList.