Todos los productos
Search
Centro de documentos

Tablestore:Collapse (eliminar duplicados)

Última actualización: Sep 03, 2026

La función collapse elimina los duplicados de un conjunto de resultados de consulta según una columna especificada, de modo que cada valor único aparece solo una vez en los resultados devueltos. Utilice collapse para mantener la diversidad de los resultados cuando una sola categoría domina el conjunto.

La función collapse logra la deduplicación (Distinct) en la mayoría de los escenarios, lo cual equivale a eliminar duplicados por la columna de colapso. Sin embargo, solo se aplica a columnas de tipo entero, número de punto flotante y Keyword; no admite columnas de tipo array y devuelve únicamente los primeros 100,000 resultados ordenados.

Límites de uso

Antes de utilizar la función collapse, tenga en cuenta las siguientes restricciones:

  • Tipos de columna compatibles: La función collapse solo se aplica a columnas de tipo entero, número de punto flotante y Keyword. Las columnas de tipo array no son compatibles.

  • Paginación: La función collapse solo admite paginación mediante offset y limit. No es compatible con la paginación basada en token.

  • Agregación: Cuando se utiliza la agregación estadística junto con la función collapse, la agregación se aplica únicamente al conjunto de resultados previo a la operación de colapso.

  • Límite de recuento de grupos: Después de la operación de colapso, el número total de grupos devueltos depende del valor máximo de offset más limit. Se pueden devolver hasta 100,000 grupos como máximo.

  • Recuento total: El número total de filas en la respuesta corresponde a la cantidad de filas coincidentes antes de la operación de colapso. No es posible obtener el número total de grupos después de dicha operación.

Parámetros

La función collapse se proporciona mediante la operación Search y se implementa con el parámetro collapse. A continuación se describen los parámetros utilizados en una consulta con collapse.

Parámetro

Descripción

query

Cualquier tipo de consulta.

collapse

Configuración de collapse, que incluye el ajuste fieldName. fieldName: nombre de la columna por la cual se colapsa el conjunto de resultados. Este parámetro solo se aplica a columnas de tipo entero, número de punto flotante y Keyword. Las columnas de tipo array no son compatibles.

offset

Posición desde la cual comienza la consulta actual.

limit

Número máximo de filas que se devolverán en la consulta actual. Si solo desea obtener el recuento de filas sin necesidad de los datos, establezca limit en 0. No se devolverá ninguna fila.

getTotalCount

Especifica si se debe devolver el número total de filas coincidentes. El valor predeterminado es false, lo que indica que no se devuelve dicho recuento. Devolver el total de filas coincidentes afecta el rendimiento de la consulta.

tableName

Nombre de la tabla de datos.

indexName

Nombre del índice de búsqueda.

columnsToGet

Especifica si se deben devolver todas las columnas. Este parámetro incluye los ajustes returnAll y columns. El valor predeterminado de returnAll es false, lo que indica que no se devuelven todas las columnas. En este caso, puede usar columns para especificar cuáles devolver. Si no utiliza columns para indicarlas, solo se devuelven las columnas de clave primaria. Si establece returnAll en true, se devuelven todas las columnas.

Uso

Puede utilizar la interfaz de línea de comandos o un SDK para colapsar resultados al consultar datos.

Uso de la interfaz de línea de comandos

Ejecute el comando search en la interfaz de línea de comandos para consultar datos mediante un índice de búsqueda y configure el parámetro Collapse en las condiciones de consulta para utilizar la función collapse. Para obtener más información, consulte Search indexes.

  • Ejecute el comando search para consultar datos en la tabla mediante un índice de búsqueda y devolver todas las columnas indexadas.

search -n search_index --return_all_indexed
  • Introduzca las condiciones de consulta cuando se le solicite. El siguiente código muestra un ejemplo:

{
    "Offset": -1,
    "Limit": 10,
    "Collapse": {
        "FieldName": "product_name"
    },
    "Sort": null,
    "GetTotalCount": true,
    "Token": null,
    "Query": {
        "Name": "MatchQuery",
        "Query": {
            "FieldName": "user_id",
            "Text": "00002",
            "MinimumShouldMatch": 1
        }
    }
}

A continuación se describen los campos clave del ejemplo:

Campo

Descripción

Offset

Posición desde la cual comienza la consulta. Un valor de -1 indica que no se aplica ningún desplazamiento.

Limit

Número máximo de filas que se devolverán.

Collapse.FieldName

Nombre de la columna por la cual se eliminan los duplicados en los resultados. En este ejemplo, se utiliza product_name como columna de colapso. Reemplace este valor por el nombre de su columna destino.

Query

Condiciones de la consulta. Este ejemplo utiliza una MatchQuery en la columna user_id. Reemplace el nombre del campo y el texto de consulta por sus propios valores.

Una vez que la consulta devuelva resultados, compruebe que la función collapse opera correctamente al verificar que los valores en la columna de colapso sean únicos en todas las filas retornadas.

Uso de un SDK

Puede utilizar Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK o PHP SDK para colapsar resultados al consultar datos. El siguiente ejemplo utiliza el SDK de Java para describir cómo emplear la función collapse.

El siguiente ejemplo consulta todas las filas, colapsa los resultados por el campo category y ordena 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());

Consulta de datos

En el modo VCU (anteriormente modo Reserved), la consulta de datos mediante un índice de búsqueda consume recursos de cómputo de VCU. En el modo CU (anteriormente modo Pay-As-You-Go), la consulta de datos mediante un índice de búsqueda consume throughput de lectura. Para obtener más información, consulte Search index billing.

La consulta de datos mediante un índice de búsqueda consume throughput de lectura. Para obtener más información, consulte Billable items of search indexes.

El uso de la función collapse durante la consulta de datos no afecta las reglas de facturación existentes.

Preguntas frecuentes

Referencias