Todos los productos
Search
Centro de documentos

Tablestore:JSON queries

Última actualización: Sep 03, 2026

Utilice Tablestore SDK for Python para consultar campos secundarios de tipo Object o Nested en un índice de búsqueda.

Requisitos previos

Instale Tablestore SDK for Python e inicialice un cliente.

El campo de destino debe estar configurado como un campo JSON de tipo Object o Nested en el índice de búsqueda. Para obtener más información, consulte Create a search index.

Descripción

Las consultas JSON no tienen un tipo de consulta dedicado. Seleccione un método de consulta según el json_type del campo JSON en el índice de búsqueda.

Tipo JSON

Descripción

Object

No conserva los límites entre objetos secundarios dentro de un arreglo. Utilice directamente un tipo de consulta adecuado al tipo del campo secundario y al requisito de coincidencia, y especifique la ruta completa del campo secundario. Distintos objetos secundarios pueden satisfacer diferentes condiciones.

Nested

Trata cada objeto secundario de un arreglo como una fila secundaria independiente y conserva las relaciones entre campos. Envuelva las consultas secundarias en NestedQuery y especifique la ruta del campo Nested en path. Todas las condiciones internas deben ser satisfechas por la misma fila secundaria.

Por ejemplo, suponga que el arreglo address contiene {"country":"China","city":"hangzhou"} y {"country":"usa","city":"Seattle"}. Una consulta que busque tanto country=China como city=Seattle coincidirá con la fila si el campo es de tipo Object, pero no lo hará si el campo es de tipo Nested.

Nota

Los campos secundarios de un campo JSON no pueden ser campos Vector.

Consulta de un campo Object

El siguiente ejemplo consulta filas donde profile.name es alice y profile.score es mayor o igual a 80.

query = BoolQuery(
    must_queries=[
        TermQuery("profile.name", "alice"),
        RangeQuery("profile.score", range_from=80),
    ]
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
print(response.rows)

Consulta de un campo Nested

El siguiente ejemplo requiere que el mismo objeto secundario en address tenga address.country igual a China y address.city igual a Seattle. Para otras configuraciones, consulte Nested query.

child_query = BoolQuery(
    must_queries=[
        TermQuery("address.country", "China"),
        TermQuery("address.city", "Seattle"),
    ]
)
query = NestedQuery("address", child_query)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
print(response.rows)

Parámetros

Solicitud de búsqueda

El método search incluye los siguientes parámetros.

Nombre

Tipo

Descripción

table_name (obligatorio)

str

Nombre de la tabla de datos.

index_name (obligatorio)

str

Nombre del índice de búsqueda.

search_query (obligatorio)

SearchQuery

Condición de consulta y configuraciones generales de consulta.

columns_to_get (opcional)

ColumnsToGet

Configuración de columnas a devolver. Si no se especifica este parámetro, solo se devuelven las columnas de clave principal.

routing_keys (opcional)

list

Valores de clave principal de los campos de enrutamiento personalizado. Este parámetro no es necesario si no se ha configurado el enrutamiento personalizado.

timeout_s (opcional)

int

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 consulta

search_query es de tipo SearchQuery e incluye los siguientes parámetros.

Nombre

Tipo

Descripción

query (obligatorio)

Query

Para un campo Object, especifique una consulta adecuada al tipo del campo secundario. Para un campo Nested, especifique NestedQuery.

sort (opcional)

Sort

Orden de clasificación de los resultados. Para obtener más información, consulte Sort and paginate results.

get_total_count (opcional)

bool

Indica si se debe devolver el número total de filas coincidentes. Valor predeterminado: False. Establecer este parámetro en True incrementa la sobrecarga de la consulta.

next_token (opcional)

bytes

Token de paginación. Pase el valor de next_token de la respuesta anterior para recuperar la siguiente página.

offset (opcional)

int

Desplazamiento desde el cual comienza la consulta. Utilice este parámetro para paginación superficial.

limit (opcional)

int

Número máximo de filas a devolver. Si este parámetro se establece en 0, no se devuelve ninguna fila.

aggs (opcional)

list[Agg]

Configuraciones de agregación de métricas. Para obtener más información, consulte Aggregation.

group_bys (opcional)

list[BaseGroupBy]

Configuraciones de agrupamiento. Para obtener más información, consulte Aggregation.

collapse_field (opcional)

Collapse

Configuración de colapso de resultados. Para obtener más información, consulte Collapse query results.

highlight (opcional)

Highlight

Configuración de resumen y resaltado para campos Text. Para obtener más información, consulte Summary and highlighting.

Columnas de retorno

columns_to_get es de tipo ColumnsToGet e incluye los siguientes parámetros.

Nombre

Tipo

Descripción

column_names (opcional)

list[str]

Nombres de las columnas de atributos a devolver. Especifique este parámetro únicamente cuando return_type sea SPECIFIED.

return_type (opcional)

ColumnReturnType

Modo de retorno de columnas. NONE (predeterminado) devuelve solo columnas de clave principal; SPECIFIED devuelve las columnas de atributos especificadas; ALL devuelve todas las columnas de atributos de la tabla; y ALL_FROM_INDEX devuelve todos los campos almacenados en el índice.

Respuesta

El método search devuelve SearchResponse. La siguiente tabla describe los campos principales.

Campo

Tipo

Descripción

rows

list[Row]

Filas devueltas por la consulta. El número no excede el valor de limit.

next_token

bytes

Token para la siguiente página. Un valor vacío indica que no hay más datos disponibles.

total_count

int

Número de filas coincidentes. El valor depende de get_total_count.

is_all_succeed

bool

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

agg_results

list[AggResult]

Resultados de la agregación de métricas. Este campo está vacío si no se configura aggs.

group_by_results

list[GroupByResult]

Resultados del agrupamiento. Este campo está vacío si no se configura group_bys.

search_hits

list[SearchHit]

Coincidencias de búsqueda, que incluyen información extendida como filas, puntuaciones de relevancia y resaltados.

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 para evitar errores de desempaquetado si se extienden los campos de respuesta.

(
    rows,
    next_token,
    total_count,
    is_all_succeed,
    agg_results,
    group_by_results,
    search_hits,
) = response.v1_response()