Todos os produtos
Search
Central de documentação

Tablestore:Collapse query results

Última atualização: Jul 28, 2026

Ao consultar um search index com o Tablestore SDK for Java, é possível colapsar os resultados por um campo específico para retornar apenas uma linha por valor distinto desse campo.

Pré-requisitos

Instale o Tablestore SDK for Java e inicialize um cliente.

Como funciona

O colapso de campos agrupa linhas correspondentes pelo valor de um campo específico do search index e retorna uma linha representativa por grupo. A ordem de classificação efetiva determina a linha retornada em cada grupo. Use sorting and pagination para configurar essa ordenação. O colapso altera apenas a exibição dos resultados da consulta, sem modificar os dados na tabela de dados.

Importante
  • Ative a classificação e a agregação para o campo de colapso. Esse campo deve ser do tipo Keyword, Long ou Double e não pode ser um array.

  • Consultas com colapso aceitam apenas paginação baseada em limit e offset. A paginação baseada em token não é compatível. A soma de limit e offset não pode exceder 100000.

  • Agregações e group-bys operam sobre os resultados correspondentes antes do colapso. A contagem total de linhas reflete o número de linhas correspondentes antes dessa operação. Não é possível obter o número total de grupos após o colapso.

Chame search para consultar dados e configure SearchQuery.collapse para especificar o campo de colapso.

SearchResponse search(SearchRequest request)

O exemplo abaixo consulta todas as linhas, colapsa os resultados pelo campo category e ordena as linhas pelo campo price em ordem decrescente. O sistema retorna a linha com o maior preço em cada categoria.

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

Solicitação de consulta

O parâmetro request é do tipo SearchRequest. A tabela a seguir descreve seus parâmetros.

Nome

Tipo

Descrição

tableName (obrigatório)

String

Nome da tabela de dados.

indexName (obrigatório)

String

Nome do search index.

searchQuery (obrigatório)

SearchQuery

Condição de consulta e configuração de colapso.

columnsToGet (opcional)

SearchRequest.ColumnsToGet

Colunas a retornar. Se este parâmetro não for configurado, o sistema retorna apenas as colunas de chave primária.

timeoutInMillisecond (opcional)

int

Tempo limite da consulta no nível da solicitação, em milissegundos. Valor padrão: -1, que indica ausência de tempo limite específico.

routingValues (opcional)

List<PrimaryKey>

Valores de chave primária dos campos de roteamento personalizado. Ignore este parâmetro se não utilizar roteamento personalizado.

Configuração de consulta

O parâmetro request.searchQuery é do tipo SearchQuery. A tabela a seguir descreve seus parâmetros.

Nome

Tipo

Descrição

query (obrigatório)

Query

Condição da consulta. Aceita tipos de consulta de search index.

collapse (obrigatório)

Collapse

Configuração de colapso.

offset (opcional)

Integer

Posição do grupo onde a consulta atual começa. Valor padrão: 0. A soma deste parâmetro com limit não pode exceder 100000.

limit (opcional)

Integer

Número máximo de grupos a retornar. Valor padrão: 10. Se este parâmetro for 0, nenhuma linha será retornada. O valor máximo é 1000 se todas as colunas retornadas forem lidas do search index, ou 100 se alguma coluna retornada precisar ser lida da tabela de dados.

highlight (opcional)

Highlight

Configuração de resumo e destaque. O retorno de resultados destacados depende do tipo de consulta e da configuração do campo de índice.

sort (opcional)

Sort

Ordem de classificação dos resultados. Determina a linha representativa retornada de cada grupo e a ordem dos grupos. Se este parâmetro não for configurado, o sistema usa a classificação do índice.

trackTotalCount (opcional)

int

Número máximo esperado de linhas correspondentes a contar. Valor padrão: TRACK_TOTAL_COUNT_DISABLED, que desativa a contagem. Defina o valor como TRACK_TOTAL_COUNT para contar todas as linhas correspondentes antes do colapso. Um valor menor proporciona melhor desempenho na consulta.

filter (opcional)

SearchFilter

Filtro aplicado aos resultados de query.

aggregationList (opcional)

List<Aggregation>

Configurações de agregação. As agregações operam sobre os resultados correspondentes antes do colapso.

groupByList (opcional)

List<GroupBy>

Configurações de group-by. Os group-bys operam sobre os resultados correspondentes antes do colapso.

token (opcional)

byte[]

Token de paginação. Não configure este parâmetro ao usar colapso de campos.

Configuração de colapso

O parâmetro request.searchQuery.collapse é do tipo Collapse. A tabela a seguir descreve seu parâmetro.

Nome

Tipo

Descrição

fieldName (obrigatório)

String

Nome do campo de colapso. A classificação e a agregação devem estar ativadas para o campo. Ele deve ser do tipo Keyword, Long ou Double e não pode ser um array.

Colunas a retornar

O parâmetro request.columnsToGet é do tipo SearchRequest.ColumnsToGet. A tabela a seguir descreve seus parâmetros.

Nome

Tipo

Descrição

columns (opcional)

List<String>

Nomes das colunas de atributo a retornar. Configure este parâmetro apenas se tanto returnAll quanto returnAllFromIndex forem false. Caso não seja configurado, o sistema retorna apenas as colunas de chave primária.

returnAll (opcional)

boolean

Especifica se todas as colunas de atributo da tabela de dados devem ser retornadas. Valor padrão: false.

returnAllFromIndex (opcional)

boolean

Especifica se todas as colunas de atributo armazenadas no search index devem ser retornadas. Valor padrão: false. Não defina este parâmetro e returnAll como true simultaneamente.

Resposta

O método search retorna SearchResponse. A tabela a seguir descreve os campos relacionados ao colapso de campos.

Nome

Tipo

Descrição

totalCount

long

Quantidade de linhas correspondentes antes do colapso. Chame getTotalCount() para obter o valor. Este valor depende de trackTotalCount e não indica o número de grupos após o colapso.

rows

List<Row>

Linhas após o colapso. Chame getRows() para obter o valor. O sistema retorna no máximo uma linha para cada valor distinto do campo de colapso.

searchHits

List<SearchHit>

Resultados de busca após o colapso. Chame getSearchHits() para obter o valor.

isAllSuccess

boolean

Indica se todas as partições do índice foram consultadas. Chame isAllSuccess() para obter o valor. Se este campo for false, a resposta contém resultados parciais.

aggregationResults

AggregationResults

Resultados de agregação calculados a partir das linhas correspondentes antes do colapso. Chame getAggregationResults() para obter o valor. Este campo é retornado apenas se aggregationList estiver configurado.

groupByResults

GroupByResults

Resultados de group-by calculados a partir das linhas correspondentes antes do colapso. Chame getGroupByResults() para obter o valor. Este campo é retornado apenas se groupByList estiver configurado.