Utilice Tablestore SDK for Python para filtrar datos según la existencia de un campo indexado específico.
Requisitos previos
Instale Tablestore SDK for Python e inicialice un cliente.
Descripción
Una consulta de existencia, también conocida como consulta NULL, coincide con las filas en las que existe un campo indexado especificado. Un campo no existe si la columna correspondiente no se escribió en la tabla. Una matriz vacía también se considera un campo inexistente. Para consultar un campo anidado (Nested) o uno de sus campos secundarios, envuelva ExistsQuery dentro de NestedQuery. Para obtener las filas donde el campo no existe, agregue ExistsQuery a BoolQuery.must_not_queries. Al llamar al método search, establezca el tipo de consulta como ExistsQuery.
ExistsQuery(field_name)
El siguiente ejemplo consulta las filas en las que existe el campo city y devuelve hasta 10 filas junto con el número total de filas coincidentes.
query = ExistsQuery("city")
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) |
|
Nombre de la tabla de datos. |
|
index_name (obligatorio) |
|
Nombre del índice de búsqueda. |
|
search_query (obligatorio) |
|
Condición de consulta y configuraciones comunes de la consulta. |
|
columns_to_get (opcional) |
|
Configuración de columnas de retorno. Si no se especifica este parámetro, solo se devuelven las columnas de clave principal. |
|
routing_keys (opcional) |
|
Lista de valores de clave principal para campos de enrutamiento personalizado. No es necesario especificar este parámetro si no se ha configurado el enrutamiento personalizado. |
|
timeout_s (opcional) |
|
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) |
|
Condición de consulta. Establezca este parámetro como |
|
sort (opcional) |
|
Orden de clasificación de los resultados de la consulta. Para 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) |
|
Token de paginación. Establezca este parámetro con el valor |
|
offset (opcional) |
|
Desplazamiento desde el cual comienza la consulta actual. Utilice este parámetro para una paginación superficial. |
|
limit (opcional) |
|
Número máximo de filas a devolver. Si este parámetro se establece en |
|
aggs (opcional) |
|
Configuraciones de agregación. Para más información, consulte Aggregation. |
|
group_bys (opcional) |
|
Configuraciones de agrupamiento. Para más información, consulte Aggregation. |
|
collapse_field (opcional) |
|
Configuración de colapso de resultados, que elimina duplicados basándose en un campo específico. Para más información, consulte Collapse query results. |
Condición de consulta
search_query.query es de tipo ExistsQuery e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
field_name (obligatorio) |
|
Nombre del campo indexado que se va a consultar. |
Columnas de retorno
columns_to_get es de tipo ColumnsToGet e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
column_names (opcional) |
|
Nombres de las columnas de atributos a devolver. Especifique este parámetro únicamente cuando |
|
return_type (opcional) |
|
Modo de columnas de retorno. |
Respuesta
El método search devuelve SearchResponse. La siguiente tabla describe los campos principales.
|
Campo |
Tipo |
Descripción |
|
rows |
|
Filas devueltas por la consulta actual. El número de filas no supera el valor de |
|
next_token |
|
Token para la página siguiente. Si este campo no está vacío, páselo a la siguiente solicitud para continuar la lectura. |
|
total_count |
|
Número de filas coincidentes. El 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 |
|
Resultados de agregación. Este campo está vacío si no se configura |
|
group_by_results |
|
Resultados de agrupamiento. Este campo está vacío si no se configura |
|
search_hits |
|
Coincidencias de búsqueda, que incluyen información extendida como puntuaciones de relevancia, resaltados y filas secundarias coincidentes. |
Respuesta compatible con tuplas
A partir de Tablestore SDK for Python 5.2.0, las API de búsqueda devuelven objetos de respuesta en lugar de tuplas. La versión 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 si se amplían los campos de respuesta.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()