Utilice Tablestore SDK for Python para ejecutar una consulta de rango en un índice de búsqueda y filtrar datos según los límites de valor de un campo. Puede controlar si cada límite se incluye en la consulta.
Requisitos previos
Instale Tablestore SDK for Python e inicialice un cliente.
Descripción
Una consulta de rango en un índice de búsqueda coincide con las filas cuyos valores de campo se encuentran dentro de un intervalo especificado. Puede definir únicamente el límite inferior, únicamente el límite superior o ambos; sin embargo, debe especificar como mínimo uno de ellos. En el caso de un campo Text, una fila coincide si alguno de sus tokens se encuentra dentro del intervalo. Al invocar el método search, establezca el tipo de consulta como RangeQuery.
RangeQuery(field_name, range_from=None, range_to=None, include_lower=True, include_upper=False)
A continuación se muestra un ejemplo que consulta las filas donde el campo price se encuentra en el intervalo cerrado por la izquierda y abierto por la derecha [100, 500). La consulta devuelve hasta 10 filas y el número total de filas coincidentes.
query = RangeQuery(
"price",
range_from=100,
range_to=500,
include_lower=True,
include_upper=False,
)
search_query = SearchQuery(
query,
limit=10,
get_total_count=True,
)
response = client.search(
"example_table",
"example_index",
search_query,
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.total_count)
for row in response.rows:
print(row)
Parámetros
Solicitud de búsqueda
El método search incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
table_name (obligatorio) |
|
El nombre de la tabla de datos. |
|
index_name (obligatorio) |
|
El nombre del índice de búsqueda. |
|
search_query (obligatorio) |
|
La condición de consulta y las configuraciones generales de la misma. |
|
columns_to_get (opcional) |
|
La configuración de columnas a devolver. Si no se especifica este parámetro, solo se devuelven las columnas de clave primaria. |
|
routing_keys (opcional) |
|
La lista de valores de clave primaria para los campos de enrutamiento personalizado. No es necesario especificar este parámetro si no se ha configurado el enrutamiento personalizado. |
|
timeout_s (opcional) |
|
El tiempo de espera de la solicitud en segundos. Si no se especifica este parámetro, se utiliza el tiempo de espera definido a nivel de cliente. |
Configuración de la consulta
search_query es de tipo SearchQuery e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
query (obligatorio) |
|
La condición de consulta. Establezca este parámetro como |
|
sort (opcional) |
|
El orden de clasificación de los resultados de la consulta. Para obtener más información, consulte Sort and paginate results. |
|
get_total_count (opcional) |
|
Indica si se debe devolver el número total de filas coincidentes. Valor predeterminado: |
|
next_token (opcional) |
|
El token de paginación. Establezca este parámetro con el valor |
|
offset (opcional) |
|
El desplazamiento desde el cual comienza la consulta actual. Utilice este parámetro para una paginación superficial. |
|
limit (opcional) |
|
El número máximo de filas a devolver. Si este parámetro se establece en |
|
aggs (opcional) |
|
Las configuraciones de agregación. Para obtener más información, consulte Aggregation. |
|
group_bys (opcional) |
|
Las configuraciones de agrupamiento. Para obtener más información, consulte Aggregation. |
|
collapse_field (opcional) |
|
La configuración de colapso de resultados, que elimina duplicados con base en un campo específico. Para obtener más información, consulte Collapse query results. |
|
highlight (opcional) |
|
La configuración de resumen y resaltado para campos |
Condición de consulta
search_query.query es de tipo RangeQuery e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
field_name (obligatorio) |
|
El nombre del campo indexado que se va a consultar. Las consultas de rango admiten campos |
|
range_from (opcional) |
|
El límite inferior. Debe especificar como mínimo uno de los parámetros |
|
range_to (opcional) |
|
El límite superior. Debe especificar como mínimo uno de los parámetros |
|
include_lower (opcional) |
|
Indica si se incluye el límite inferior. Valor predeterminado: |
|
include_upper (opcional) |
|
Indica si se incluye el límite superior. Valor predeterminado: |
Columnas de retorno
columns_to_get es de tipo ColumnsToGet e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
column_names (opcional) |
|
Los nombres de las columnas de atributos que se van a devolver. Especifique este parámetro únicamente cuando |
|
return_type (opcional) |
|
El modo de retorno de columnas. |
Respuesta
El método search devuelve un objeto SearchResponse. La siguiente tabla describe los campos principales.
|
Campo |
Tipo |
Descripción |
|
rows |
|
Las filas devueltas por la consulta actual. El número de filas no supera el valor de |
|
next_token |
|
El token para la siguiente página. Si este campo no está vacío, páselo a la siguiente solicitud para continuar la lectura. |
|
total_count |
|
El número de filas coincidentes. Este valor depende de la configuración de |
|
is_all_succeed |
|
Indica si se consultaron todas las particiones del índice. Si el valor es |
|
agg_results |
|
Los resultados de agregación. Este campo está vacío si no se configuran las opciones de |
|
group_by_results |
|
Los resultados de agrupamiento. Este campo está vacío si no se configuran las opciones de |
|
search_hits |
|
Los aciertos de búsqueda, que incluyen información extendida como puntuaciones de relevancia, resaltados y filas secundarias coincidentes. |
Respuesta compatible con tuplas
A partir de la versión 5.2.0 de Tablestore SDK for Python, las API de búsqueda devuelven objetos de respuesta en lugar de tuplas. Las versiones 5.1.0 y anteriores devuelven tuplas directamente. En la versión 5.2.1 y posteriores, puede llamar a SearchResponse.v1_response() para obtener una tupla compatible con versiones anteriores. Para código nuevo, acceda directamente a los atributos de SearchResponse y evite errores de desempaquetado en caso de que se amplíen los campos de respuesta.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()