Todos los productos
Search
Centro de documentos

Tablestore:Ordenamiento y paginación

Última actualización: Sep 03, 2026

Al utilizar un índice de búsqueda para consultar datos, puede usar un método de ordenamiento predefinido o especificar uno propio. De este modo, las filas que cumplen con los criterios de consulta se devuelven según el orden predefinido o especificado. Si la respuesta incluye una gran cantidad de filas, puede localizar los datos necesarios mediante la configuración de los parámetros limit y offset, o bien mediante tokens.

Escenarios

Categoría

Método

Función

Escenario

Ordenamiento

Predefinir un método de ordenamiento al crear un índice de búsqueda

Index presorting (IndexSort)

De forma predeterminada, los datos en un índice de búsqueda se ordenan según la configuración de preordenamiento especificada por el parámetro IndexSort. Esta configuración determina el orden predeterminado en el que se devuelven las filas que cumplen con los criterios de consulta.

Especificar un método de ordenamiento al consultar datos

Sorting based on the BM25-based keyword relevance score (ScoreSort)

Puede utilizar ScoreSort para ordenar los resultados de la consulta según la puntuación de relevancia de palabras clave basada en BM25. ScoreSort es adecuado para escenarios como la búsqueda de texto completo.

Sorting based on the primary key value (PrimaryKeySort)

Puede utilizar PrimaryKeySort para ordenar los resultados de la consulta según el valor de la clave primaria. PrimaryKeySort es adecuado para escenarios en los que desea ordenar los datos según sus identificadores únicos.

Sorting based on the values of one or more columns (FieldSort)

Puede utilizar FieldSort para ordenar los resultados de la consulta según los valores de una o más columnas. FieldSort es adecuado para escenarios en los que desea ordenar los datos según propiedades como el volumen de ventas o las vistas de página. En la mayoría de los casos, FieldSort se utiliza en industrias como el comercio electrónico, las redes sociales y los activos multimedia.

Sorting by geographical location (GeoDistanceSort)

Puede utilizar GeoDistanceSort para ordenar los resultados de la consulta por ubicación geográfica. GeoDistanceSort es adecuado para escenarios en los que desea ordenar los datos según la distancia desde una ubicación específica. En la mayoría de los casos, GeoDistanceSort se utiliza en industrias como la cartografía y la logística. Por ejemplo, puede ordenar restaurantes alrededor de una ubicación según la distancia desde dicho punto.

Paginación

Especificar un método de paginación al consultar datos

Paging based on the limit and offset parameters

Si el número de filas en la respuesta es menor a 100,000, puede utilizar este método para saltar a una página específica.

Paging based on tokens

Si utiliza esta función, los datos se devuelven página por página y solo puede avanzar hacia adelante. Si desea retroceder, puede almacenar en caché y utilizar un token anterior, ya que los tokens son válidos durante la consulta.

Preordenamiento de índices

De forma predeterminada, Tablestore ordena los datos en un índice de búsqueda según un orden predefinido, denominado preordenamiento de índices (IndexSort). Al consultar datos, IndexSort determina el orden predeterminado de los resultados devueltos.

Al crear un índice de búsqueda, puede personalizar IndexSort. Si no especifica esta configuración, el índice utiliza el ordenamiento por clave primaria de forma predeterminada.

Importante
  • El preordenamiento de índices solo admite PrimaryKeySort (ordenamiento por clave primaria) y FieldSort (ordenamiento por campo).

  • No se puede utilizar el preordenamiento de índices en un índice de búsqueda que contenga campos de tipo anidado.

  • Después de crear un índice de búsqueda, la función dynamic schema modification le permite modificar la configuración de IndexSort.

Especificar un método de ordenamiento al consultar datos

El ordenamiento solo se puede realizar en campos cuyo parámetro enable_sort_and_agg esté establecido en true.

ScoreSort

ScoreSort

Ordena los resultados de la consulta por puntuación de relevancia, calculada mediante el algoritmo BM25. Este método es adecuado para escenarios basados en relevancia, como la búsqueda de texto completo.

Importante
  • Si desea ordenar por puntuación de relevancia, debe especificar explícitamente ScoreSort. De lo contrario, Tablestore ordenará los resultados según la configuración de IndexSort del índice.

  • Cuando utiliza ScoreSort, los campos de tipo FuzzyKeyword no se incluyen en el ordenamiento y el parámetro weight no tiene efecto sobre estos campos.

'sort' => array(
    array(
        'score_sort' => array(
            'order' => SortOrderConst::SORT_ORDER_DESC
        )
    ),
)

PrimaryKeySort

'sort' => array(
    array(
        'pk_sort' => array(
            'order' => SortOrderConst::SORT_ORDER_ASC
        )
    ),
)

FieldSort

Puede utilizar FieldSort para ordenar los resultados de la consulta según los valores de una o más columnas específicas.

'sort' => array(
    array(
        'field_sort' => array(
            'field_name' => 'keyword',
            'order' => SortOrderConst::SORT_ORDER_ASC,
            'mode' => SortModeConst::SORT_MODE_AVG,
        )
    ),
)

GeoDistanceSort

'sort' => array(
    array(
        'geo_distance_sort' => array(
            'field_name' => 'geo',
            'order' => SortOrderConst::SORT_ORDER_ASC,
            'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE,
            'points' => array('0.6,0.6')
        )
    ),
)

Combinación de varios métodos de ordenamiento

Puede ordenar los resultados de la consulta según los valores de dos columnas en órdenes específicos para determinar el orden en que se devuelven los datos coincidentes.

'sort' => array(
    array(
        'field_sort' => array(
            'field_name' => 'keyword',
            'order' => SortOrderConst::SORT_ORDER_ASC,
            'mode' => SortModeConst::SORT_MODE_AVG,
        )
    ),
    array(
        'pk_sort' => array(
            'order' => SortOrderConst::SORT_ORDER_ASC
        )
    ),
)

Especificar un método de paginación

Configurar los parámetros limit y offset

Paginación basada en offset

Puede utilizar la paginación basada en offset cuando el número total de filas a recuperar es menor a 100,000. La suma de limit y offset debe ser menor o igual a 100,000, y el valor máximo para limit es 100.

Nota

Para aumentar el umbral de limit, consulte How do I increase the limit for the Search API to 1,000?.

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 10,
        'limit' => 10,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::MATCH_ALL_QUERY
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'keyword',
                    'order' => SortOrderConst::SORT_ORDER_ASC
                )
            ),
        ),
        'token' => null,
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('col1', 'col2')
    )
);
$response = $otsClient->search($request);

Uso de un token

Importante
$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 10,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::FUNCTION_SCORE_QUERY,
            'query' => array(
                'query' => array(
                    'query_type' => QueryTypeConst::TERM_QUERY,
                    'query' => array(
                        'field_name' => 'keyword',
                        'term' => 'keyword'
                    )
                ),
                'field_value_factor' => array(
                    'field_name' => 'long'
                )
            )
        ),
        'sort' => array(
            array(
                'score_sort' => array(
                    'order' => SortOrderConst::SORT_ORDER_DESC
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('keyword', 'long')
    )
);

$response = $otsClient->search($request);
print "total_hits: " . $response['total_hits'] . "\n";
print json_encode($response['rows'], JSON_PRETTY_PRINT);

while($response['next_token'] != null) {
    $request['search_query']['token'] = $response['next_token'];
    $request['search_query']['sort'] = null;// If next_token is included in the response, you cannot specify the sorting method because the token includes the sorting information. 
    $response = $otsClient->search($request);
    print json_encode($response['rows'], JSON_PRETTY_PRINT);
}

Preguntas frecuentes

Referencias

  • Al utilizar un índice de búsqueda para consultar datos, puede emplear los siguientes métodos de consulta: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query y exists query. Puede utilizar diferentes métodos de consulta para obtener datos desde múltiples dimensiones según sus requisitos empresariales.

    Si desea ordenar o paginar las filas que cumplen con los criterios de consulta, puede utilizar la función de ordenamiento y paginación. Para obtener más información, consulte Sorting and paging.

    Si desea agrupar el conjunto de resultados según una columna específica, puede utilizar la función de colapso (distintos). De este modo, los datos del tipo especificado aparecen solo una vez en los resultados de la consulta. Para obtener más información, consulte Collapse (distinct).

  • Si desea analizar datos en una tabla de datos, como obtener valores extremos, sumas y el número total de filas, puede realizar operaciones de agregación o ejecutar instrucciones SQL. Para obtener más información, consulte Aggregation y SQL query.

  • Si desea obtener rápidamente todas las filas que cumplen con los criterios de consulta sin necesidad de ordenarlas, puede llamar a las operaciones ParallelScan y ComputeSplits para utilizar la función de escaneo paralelo. Para obtener más información, consulte Parallel scan.