Todos os produtos
Search
Central de documentação

Tablestore:Collapse (distinct)

Última atualização: Jul 03, 2026

Use o recurso de collapse (distinct) para agrupar o conjunto de resultados com base em uma coluna específica quando a consulta retornar grandes volumes de dados de um mesmo tipo. Os dados desse tipo aparecem apenas uma vez nos resultados, garantindo a diversidade dos tipos retornados.

Na maioria dos cenários, use o recurso de collapse (distinct) para obter valores distintos com base nas colunas agrupadas. No entanto, esse recurso é compatível apenas com colunas cujos valores sejam do tipo INTEGER, FLOATING-POINT ou KEYWORD. Somente os 100.000 primeiros resultados são retornados.

Observações de uso

  • Ao usar o recurso de collapse (distinct), realize a paginação especificando os parâmetros offset e limit.

  • Se você agregar e agrupar um conjunto de resultados simultaneamente, a agregação ocorrerá antes do agrupamento.

  • Ao agrupar os resultados de uma consulta, o número total de resultados retornados corresponde à soma dos valores dos parâmetros offset e limit. O limite máximo é de 100.000 resultados.

  • A contagem total de linhas na resposta reflete a quantidade de linhas que atendem às condições da consulta antes da aplicação do recurso de collapse (distinct). Após o agrupamento do conjunto de resultados, não é possível consultar o número total de valores distintos.

Operação de API

Configure o parâmetro collapse na operação Search para implementar o recurso de collapse (distinct).

Parâmetros

Parâmetro

Descrição

query

Tipo da consulta. Defina este parâmetro como qualquer tipo de consulta válido.

collapse

Agrupa o conjunto de resultados com base na coluna especificada pelo campo fieldName.

fieldName: nome da coluna usada como base para o agrupamento do conjunto de resultados. Apenas colunas com valores do tipo INTEGER, FLOATING-POINT ou KEYWORD são compatíveis.

offset

Posição inicial da consulta atual.

limit

Número máximo de linhas que a consulta atual deve retornar.

Para obter apenas a contagem de linhas que atendem às condições da consulta, sem recuperar os dados, defina o parâmetro limit como 0.

getTotalCount

Define se o número total de linhas que atendem às condições da consulta será retornado. O valor padrão é false, indicando que a contagem total não será incluída na resposta.

Definir este parâmetro como true pode comprometer o desempenho da consulta.

tableName

Nome da tabela de dados.

indexName

Nome do search index.

columnsToGet

Indica se todas as colunas de cada linha correspondente devem ser retornadas. É possível configurar os campos returnAll e columns neste parâmetro.

O valor padrão do campo returnAll é false, o que significa que nem todas as colunas serão devolvidas. Nesse caso, use o campo columns para definir quais colunas deseja receber. Se nenhuma coluna for especificada, apenas as colunas de chave primária serão retornadas.

Ao definir o campo returnAll como true, todas as colunas são incluídas no resultado.

Métodos

Agrupe os resultados de uma consulta de dados usando a CLI do Tablestore ou os SDKs do Tablestore. Antes de utilizar o recurso de collapse (distinct), certifique-se de atender aos seguintes pré-requisitos:

Usar a CLI do Tablestore

Execute o comando search na CLI do Tablestore para consultar dados via search indexes e configure o parâmetro Collapse para ativar o recurso de collapse (distinct). Para mais informações, consulte Search indexes.

  1. Execute o comando search para consultar dados usando o search index search_index e retornar todas as colunas indexadas de cada linha correspondente.

    search -n search_index --return_all_indexed
  2. Insira as condições de consulta conforme solicitado pelo sistema, conforme mostrado no exemplo abaixo:

    {
        "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
            }
        }
    }

Usar SDKs do Tablestore

Agrupe os resultados de uma consulta de dados usando o Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET ou Tablestore SDK for PHP. O exemplo a seguir utiliza o Tablestore SDK for Java para demonstrar a implementação do recurso de collapse (distinct).

O código abaixo ilustra como consultar linhas onde o valor da coluna user_id corresponde a "00002" e, em seguida, agrupar o conjunto de resultados com base no valor da coluna product_name:

private static void UseCollapse(SyncClient client){
    SearchQuery searchQuery = new SearchQuery(); // Specify the query conditions. 
    MatchQuery matchQuery = new MatchQuery();
    matchQuery.setFieldName("user_id");
    matchQuery.setText("00002");

    searchQuery.setQuery(matchQuery);
    Collapse collapse = new Collapse("product_name"); // Collapse the result set based on the product_name column. 
    searchQuery.setCollapse(collapse);

    //searchQuery.setOffset(1000);// The position from which the current query starts. 
    searchQuery.setLimit(20);
    //searchQuery.setGetTotalCount(true);// Set the GetTotalCount parameter to true to return the total number of rows that meet the query conditions. 

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);// Specify the name of the data table and the name of the search index.     
    // You can use the columnsToGet parameter to specify the columns that you want to return or specify that all columns are returned. If you do not specify this parameter, only the primary key columns are returned. 
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Set the ReturnAll parameter to true to return all columns. 
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Specify the columns that you want to return. 
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse response = client.search(searchRequest);  
    //System.out.println(response.getTotalCount());    
    //System.out.println(response.getRows().size()); // Display the number of rows that are returned based on the product_name column. 
    System.out.println(response.getRows()); // Display the product names that are returned based on the product_name column. 
}

Regras de faturamento

Consultas de dados realizadas por meio de search indexes consomem throughput de leitura. Para mais informações, consulte Itens faturáveis de search indexes.

O recurso de collapse (distinct) não altera as regras de faturamento vigentes.

Perguntas frequentes

Referências