Todos os produtos
Search
Central de documentação

Tablestore:Ordenação e paginação

Última atualização: Jul 03, 2026

Ao consultar dados com um índice de busca, use um método de ordenação predefinido ou especifique um método personalizado. Assim, as linhas que atendem às condições da consulta retornam na ordem definida. Se a resposta contiver muitas linhas, localize os dados necessários configurando os parâmetros limit e offset ou usando tokens.

Cenários

Categoria

Método

Recurso

Cenário

Ordenação

Especifique um método de ordenação ao criar um índice de busca

Pré-ordenação de índice

Por padrão, os dados em um índice de busca seguem as configurações de pré-ordenação do parâmetro IndexSort. Essas configurações determinam a ordem padrão de retorno das linhas correspondentes aos critérios da consulta.

Especifique um método de ordenação durante a consulta de dados

ScoreSort

Use o ScoreSort para ordenar os resultados da consulta pela pontuação de relevância de palavras-chave baseada no BM25. Este método é ideal para cenários como busca de texto completo.

PrimaryKeySort

O PrimaryKeySort ordena os resultados da consulta pelo valor da chave primária. Use este método para classificar dados pelos identificadores únicos.

FieldSort

O FieldSort classifica os resultados da consulta pelos valores de uma ou mais colunas. Indicado para organizar dados por propriedades como volume de vendas ou visualizações de página. Frequentemente aplicado em setores como e-commerce, redes sociais e ativos de mídia.

GeoDistanceSort

Use o GeoDistanceSort para ordenar os resultados da consulta por localização geográfica. Adequado para classificar dados pela distância em relação a um ponto específico. Comum em aplicações de mapas e logística, como listar restaurantes próximos com base na distância do local.

Paginação

Especifique um método de paginação durante a consulta de dados

Configurar os parâmetros Limit e Offset

Se o número de linhas na resposta for inferior a 100.000, use este método para navegar diretamente até uma página específica.

Usar um token

Por padrão, a paginação com token avança apenas para frente. No entanto, como o token permanece válido durante a consulta, armazene em cache e reutilize o token anterior para voltar à página anterior.

Pré-ordenação de índice

Por padrão, o Tablestore organiza os dados em um índice de busca segundo uma ordem predefinida, chamada de pré-ordenação de índice (IndexSort). Durante a consulta de dados, o IndexSort define a ordem padrão dos resultados retornados.

Ao criar um índice de busca, personalize o IndexSort. Caso não especifique essa configuração, o índice adotará a ordenação por chave primária como padrão.

Importante
  • A pré-ordenação de índice suporta apenas PrimaryKeySort (ordenação por chave primária) e FieldSort (ordenação por campo).

  • Não use a pré-ordenação de índice em índices de busca que contenham campos do tipo aninhado (nested).

  • Após criar o índice de busca, use o recurso de modificação dinâmica de esquema para alterar as configurações de IndexSort.

Especifique um método de ordenação durante a consulta de dados

Ative a ordenação apenas para campos nos quais o parâmetro EnableSortAndAgg esteja definido como true.

ScoreSort

ScoreSort

Organiza os resultados da consulta pela pontuação de relevância, calculada com o algoritmo BM25. Este método é adequado para cenários baseados em relevância, como buscas de texto completo.

Importante
  • Para ordenar pela pontuação de relevância, especifique explicitamente o ScoreSort. Caso contrário, o Tablestore classificará os resultados conforme as configurações de IndexSort do índice.

  • Ao usar o ScoreSort, campos do tipo FuzzyKeyword não participam da ordenação e o parâmetro weight não surte efeito sobre eles.

var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new ScoreSort() });

PrimaryKeySort

// Sort the query results based on the values of the primary key in ascending order. 
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new PrimaryKeySort() });

// Sort the query results based on the values of the primary key in descending order. 
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new PrimaryKeySort(SortOrder.DESC) });

FieldSort

Use o FieldSort para classificar os resultados da consulta com base nos valores de uma ou mais colunas específicas.

Classificar os resultados da consulta pelos valores de uma única coluna

Use o FieldSort para organizar os resultados da consulta conforme os valores de uma coluna específica.

var searchQuery = new SearchQuery();
var fieldSort = new FieldSort("col", SortOrder.ASC);
searchQuery.Sort = new Sort(new List<ISorter>() { fieldSort });

Classificar os resultados da consulta pelos valores de múltiplas colunas

Também é possível ordenar os resultados da consulta pelos valores de duas colunas em ordens específicas, definindo a sequência de retorno dos dados correspondentes.

var searchQuery = new SearchQuery();
var col1Sort = new FieldSort("col", SortOrder.ASC);
var col2Sort = new FieldSort("co2", SortOrder.ASC);
searchQuery.Sort = new Sort(new List<ISorter>() { col1Sort, col2Sort });

GeoDistanceSort

var searchQuery = new SearchQuery();
var geoDistanceSort = new GeoDistanceSort("geoCol", new List<string>(){"0","0"});
searchQuery.Sort = new Sort(new List<ISorter>() { geoDistanceSort });

Especifique um método de paginação

Paginação baseada nos parâmetros Limit e Offset

var searchQuery = new SearchQuery();
searchQuery.Query = new MatchAllQuery();
searchQuery.Limit = 100;
searchQuery.Offset = 100;

Paginação baseada em tokens

Importante

Índices de busca com campos do tipo aninhado (nested) não suportam IndexSort. Portanto, especifique um método de ordenação na consulta para ativar a paginação. Sem uma ordem de classificação definida, o servidor não retornará um NextToken, mesmo que existam mais resultados.

/// <summary>
/// In this example, a token is used to page the rows in the response and Tablestore reads all data and returns the data in a list. 
/// </summary>
/// <param name="otsClient"></param>
public static SearchResponse ReadMoreRowsWithToken(OTSClient otsClient)
{
    var searchQuery = new SearchQuery();
    searchQuery.Query = new MatchAllQuery();

    var request = new SearchRequest(TableName, IndexName, searchQuery);

    var response = otsClient.Search(request);
    var rows = response.Rows;
    while (response.NextToken != null) // If NextToken is null in the response, all data is read. 
    {
        request.SearchQuery.Token = response.NextToken;
        response = otsClient.Search(request);
        rows.AddRange(response.Rows);
    }

    return response;
}

Perguntas frequentes

Referências