Todos los productos
Search
Centro de documentos

Tablestore:Ordenar y paginar resultados

Última actualización: Sep 03, 2026

Utilice el Tablestore SDK for Go para ordenar los resultados por valor de campo, puntuación de relevancia, clave principal o distancia geográfica, y para paginar mediante tokens.

Requisitos previos

Instale Tablestore Go SDK e inicialice un cliente.

Descripción

Puede configurar uno o varios criterios de ordenación. Los resultados se comparan según el orden de la lista de dichos criterios. Si no se configura ninguno, se utiliza el IndexSort definido durante la creación del índice de búsqueda. Si no se ha configurado IndexSort, se aplica de forma predeterminada la ordenación por clave principal. IndexSort solo admite PrimaryKeySort y FieldSort. Una vez creado el índice, puede modificar IndexSort mediante dynamically modifying the schema. ScoreSort ordena según la puntuación de relevancia BM25 y solo surte efecto cuando se configura explícitamente.

Importante
  • Cuando se especifica un criterio de ordenación que no es de clave principal, el servidor añade de forma predeterminada un criterio de clave principal para garantizar un orden determinista en las filas con valores de ordenación iguales. DisableDefaultPkSorter tiene el valor predeterminado false. No deshabilite este comportamiento para la paginación basada en tokens. Si existen valores de ordenación duplicados y la ordenación por clave principal está deshabilitada, podrían omitirse algunas filas.

  • Un índice de búsqueda que contiene un campo Nested no es compatible con IndexSort. Para paginar una consulta en este tipo de índice, configure explícitamente la ordenación en la solicitud de consulta. De lo contrario, el servidor no devolverá NextToken aunque haya más datos disponibles.

  • Al utilizar ScoreSort, los campos FuzzyKeyword no participan en la ordenación y Weight no tiene efecto sobre ellos.

searchQuery := search.NewSearchQuery().
    SetQuery(&search.MatchAllQuery{}).
    SetLimit(10).
    SetSort(&search.Sort{Sorters: []search.Sorter{
        &search.FieldSort{
            FieldName: "price",
            Order:     search.SortOrder_DESC.Enum(),
        },
    }})

for {
    response, err := client.Search(&tablestore.SearchRequest{
        TableName:   "example_table",
        IndexName:   "example_index",
        SearchQuery: searchQuery,
    })
    if err != nil {
        log.Fatal(err)
    }

    for _, row := range response.Rows {
        fmt.Println(row)
    }
    if len(response.NextToken) == 0 {
        break
    }
    searchQuery.SetToken(response.NextToken)
}

Parámetros

Configuración de ordenación

Nombre

Tipo

Descripción

Sorters (obligatorio)

[]search.Sorter

Los criterios de ordenación. Se admiten FieldSort, ScoreSort, PrimaryKeySort y GeoDistanceSort, los cuales surten efecto según su orden en la lista. DocSort solo puede configurarse explícitamente en NestedQuery.InnerHits y no puede utilizarse como criterio de ordenación de nivel superior en Search.

DisableDefaultPkSorter (opcional)

*bool

Especifica si se debe deshabilitar el criterio de ordenación de clave principal que añade el servidor. Valor predeterminado: false. Este parámetro es compatible con Tablestore SDK for Go versión 1.7.16 y posteriores.

Ordenación por valor de campo

Nombre

Tipo

Descripción

FieldName (obligatorio)

string

El campo utilizado para la ordenación. La ordenación y la agregación deben estar habilitadas para dicho campo.

Order (opcional)

*search.SortOrder

El orden de clasificación. Los valores válidos son search.SortOrder_ASC y search.SortOrder_DESC. Valor predeterminado: ascendente.

Mode (opcional)

*search.SortMode

El método de selección de valores para un campo con varios valores. Los valores válidos son search.SortMode_Min, search.SortMode_Max y search.SortMode_Avg.

NestedFilter (opcional)

*search.NestedFilter

La configuración de ordenación para un campo secundario Nested. Especifique este parámetro únicamente cuando ordene por un campo secundario Nested.

MissingValue (opcional)

interface{}

El valor de ordenación que se utiliza cuando faltan todos los campos especificados por FieldName y MissingFields. search.FirstWhenMissing coloca los valores faltantes al principio sin importar el orden de clasificación. search.LastWhenMissing o nil los coloca al final. También puede especificar un valor personalizado del tipo de campo para la ordenación.

MissingField (opcional)

*string

Un campo de ordenación alternativo. Este parámetro está obsoleto. Utilice MissingFields.

MissingFields (opcional)

[]string

Campos de ordenación alternativos. Si falta el campo especificado por FieldName, se utiliza para la ordenación el primer campo existente según el orden de la lista. Puede especificar hasta tres campos. Deben tener el mismo tipo que el campo indicado en FieldName, y tanto la ordenación como la agregación deben estar habilitadas para todos ellos. Este parámetro es compatible con Tablestore SDK for Go versión 1.9.0 y posteriores.

Filtro anidado

Nombre

Tipo

Descripción

Path (obligatorio)

string

La ruta del campo Nested.

Filter (obligatorio)

search.Query

La consulta que filtra las filas secundarias Nested utilizadas para la ordenación. Utilice MatchAllQuery para incluir todas las filas secundarias.

Ordenación por puntuación, clave principal y orden de documento

Nombre

Tipo

Descripción

ScoreSort.Order (opcional)

*search.SortOrder

El orden de la puntuación de relevancia BM25. search.NewScoreSort() ordena las puntuaciones de forma descendente de manera predeterminada.

PrimaryKeySort.Order (opcional)

*search.SortOrder

El orden de la clave principal. search.NewPrimaryKeySort() ordena las claves principales de forma ascendente de manera predeterminada.

DocSort.SortOrder (opcional)

*search.SortOrder

El orden de los documentos dentro de NestedQuery.InnerHits. Valor predeterminado: ascendente. DocSort es compatible con Tablestore SDK for Go versión 1.7.12 y posteriores.

Ordenación por distancia geográfica

Nombre

Tipo

Descripción

FieldName (obligatorio)

string

El nombre del campo de punto geográfico.

Points (obligatorio)

[]string

Los puntos de destino utilizados para calcular distancias. Utilice el formato latitude,longitude. La latitud varía entre [-90,+90] y la longitud entre [-180,+180]. Ejemplo: 35.8,-45.91.

Order (opcional)

*search.SortOrder

El orden de clasificación por distancia. search.SortOrder_ASC ordena del más cercano al más lejano, mientras que search.SortOrder_DESC ordena del más lejano al más cercano.

Mode (opcional)

*search.SortMode

El método de selección de valores cuando existen varias distancias. Los valores válidos son search.SortMode_Min, search.SortMode_Max y search.SortMode_Avg.

GeoDistanceType (opcional)

*search.GeoDistanceType

El método de cálculo de distancia. search.GeoDistanceType_ARC calcula la distancia sobre una esfera y ofrece mayor precisión. search.GeoDistanceType_PLANE calcula la distancia sobre un plano y consume menos recursos. Valor predeterminado: ARC.

NestedFilter (opcional)

*search.NestedFilter

La ruta y el filtro utilizados para ordenar un campo secundario Nested.

Configuración de paginación

Nombre

Tipo

Descripción

Limit (opcional)

int32

El número máximo de filas por página. Valor predeterminado: 10. Por lo general, el máximo es 100. Si todas las columnas devueltas se almacenan en el índice de búsqueda, el límite puede aumentarse a 1,000. Para obtener más información, consulte How do I increase the limit of a search index query to 1,000?. En la paginación basada en desplazamiento, la suma de Offset + Limit no puede exceder 100,000.

Offset (opcional)

int32

La posición inicial. Valor predeterminado: 0. Utilice este parámetro para una paginación superficial dentro de las primeras 100,000 filas.

Token (opcional)

[]byte

El valor NextToken de la respuesta anterior. Utilice este parámetro para realizar una paginación profunda consecutiva. SetToken borra Sort porque el token contiene las condiciones de ordenación de la página previa. No especifique Offset para la paginación basada en tokens. Codifique en Base64 el token binario para almacenarlo o transmitirlo mediante protocolos de texto o entre procesos.

La paginación basada en tokens avanza únicamente hacia adelante de forma predeterminada. Para regresar a una página anterior, almacene en caché y reutilice un token previo. Este método de paginación no está sujeto al límite de profundidad de 100,000 filas.

Respuesta

Nombre

Tipo

Descripción

Rows

[]*tablestore.Row

Las filas devueltas por la consulta actual. La cantidad no excede Limit.

SearchHits

[]*tablestore.SearchHit

Los resultados de la búsqueda. Lea este campo cuando utilice puntuaciones de relevancia, resaltado o Nested InnerHits.

TotalCount

int64

El número total de filas coincidentes. El valor depende de SetGetTotalCount y no corresponde a la cantidad de filas de la página actual.

NextToken

[]byte

El token para la siguiente página. Un valor vacío indica que no hay más datos o que la consulta actual carece de un orden de clasificación determinista.

IsAllSuccess

bool

Indica si se consultaron todas las particiones del índice. Si el valor es false, se devuelven resultados parciales.