Todos los productos
Search
Centro de documentos

Tablestore:Nested query

Última actualización: Sep 03, 2026

Utilice Tablestore SDK for Python para buscar datos en un campo Nested; esta operación conserva los límites de las filas secundarias y permite devolver opcionalmente las filas secundarias coincidentes.

Requisitos previos

Instale Tablestore SDK for Python e inicialice un cliente.

Descripción

Una consulta anidada busca filas secundarias dentro de un campo Nested. Cada fila secundaria conserva las relaciones entre sus campos. No es posible consultar directamente un campo secundario; debe encapsular la consulta secundaria en NestedQuery. El parámetro path especifica la ruta del campo Nested, y los campos de la consulta secundaria deben usar rutas completas. La consulta secundaria puede ser de cualquier tipo Query. Si una misma fila secundaria debe cumplir varias condiciones, utilice una BoolQuery que contenga dichas condiciones como consulta secundaria de un único NestedQuery. Si distintas filas secundarias pueden satisfacer diferentes condiciones, cree un NestedQuery por cada condición y combínelos con una BoolQuery externa.

NestedQuery(path, query, score_mode=ScoreMode.NONE, inner_hits=None, weight=None)

El siguiente ejemplo busca filas en las que una misma fila secundaria del campo Nested items tiene items.name igual a alice y items.age menor que 40.

child_query = BoolQuery(
    must_queries=[
        TermQuery("items.name", "alice"),
        RangeQuery("items.age", range_to=40),
    ]
)
query = NestedQuery("items", child_query)
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)

str

Nombre de la tabla de datos.

index_name (obligatorio)

str

Nombre del índice de búsqueda.

search_query (obligatorio)

SearchQuery

Condición de búsqueda y configuraciones generales de la 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 primaria.

routing_keys (opcional)

list

Lista de valores de clave primaria para campos de enrutamiento personalizado. No es necesario especificar este parámetro 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 configurado 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)

Query

Condición de la consulta. Establezca este parámetro en NestedQuery.

sort (opcional)

Sort

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)

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. Establezca este parámetro con el valor next_token de la respuesta anterior para recuperar la página siguiente. Para obtener más información, consulte Sort and paginate results.

offset (opcional)

int

Desplazamiento desde el cual comienza la consulta actual. 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 de datos.

aggs (opcional)

list[Agg]

Configuraciones de agregación. 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, que elimina duplicados con base en un campo específico. Para obtener más información, consulte Collapse query results.

Condición de la consulta

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

Nombre

Tipo

Descripción

path (obligatorio)

str

Ruta del campo Nested. Para un campo Nested multinivel, especifique la ruta completa, por ejemplo items.details.

query (obligatorio)

Query

Condición de consulta que se ejecutará en las filas secundarias ubicadas en path. Puede utilizar cualquier tipo de Query. Los campos secundarios deben usar rutas completas, como items.name.

score_mode (opcional)

ScoreMode

Método utilizado para calcular la puntuación de la fila principal cuando coinciden varias filas secundarias. NONE (predeterminado) no calcula puntuaciones de relevancia. AVG, MAX, MIN y TOTAL utilizan el promedio, el máximo, el mínimo y la suma de las puntuaciones de las filas secundarias, respectivamente.

inner_hits (opcional)

InnerHits

Configuraciones de devolución, ordenamiento, paginación y resaltado para las filas secundarias coincidentes. Si no se especifica este parámetro, no se devuelven los detalles de las filas secundarias coincidentes.

weight (opcional)

float

Peso de relevancia de la condición de consulta. El valor debe ser un número de punto flotante positivo. Valor predeterminado: 1.0.

Filas secundarias coincidentes

search_query.query.inner_hits es de tipo InnerHits e incluye los siguientes parámetros.

Nombre

Tipo

Descripción

sort (obligatorio)

Sort

Orden de clasificación de las filas secundarias coincidentes. Establezca este parámetro en None si no requiere ordenamiento.

offset (obligatorio)

int

Desplazamiento desde el cual se devuelven las filas secundarias coincidentes. Pase None si no desea especificar un valor.

limit (obligatorio)

int

Cantidad de filas secundarias coincidentes a devolver. Si pasa None, el servidor devuelve tres filas secundarias de forma predeterminada.

highlight (obligatorio)

Highlight

Configuración de resumen y resaltado para los campos secundarios. Establezca este parámetro en None si no requiere resaltado. Para obtener más información, consulte Summary and highlighting.

Columnas a devolver

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 devolución de columnas. NONE (predeterminado) devuelve solo las columnas de clave primaria; SPECIFIED devuelve las columnas de atributos indicadas en column_names; ALL devuelve todas las columnas de atributos de la tabla; y ALL_FROM_INDEX devuelve todas las columnas de atributos indexadas.

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 actual. La cantidad de filas no supera el valor de limit.

next_token

bytes

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

int

Número de filas coincidentes. El valor depende de la configuración 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 y total_count podría ser menor que el número real de filas coincidentes.

agg_results

list[AggResult]

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

group_by_results

list[GroupByResult]

Resultados de 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 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 así evitar errores de desempaquetado si se extienden los campos de la respuesta.

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

Ejemplos

Devolver filas secundarias coincidentes y resaltados

El siguiente ejemplo busca filas secundarias anidadas donde items.name es igual a alice, y devuelve las filas secundarias coincidentes junto con fragmentos resaltados. Los resultados de resaltado están disponibles en search_hits[].search_inner_hits[].search_hits[].highlight_result.

highlight = Highlight([HighlightParameter("items.name")])
inner_hits = InnerHits(
    sort=None,
    offset=0,
    limit=10,
    highlight=highlight,
)
query = NestedQuery(
    "items",
    TermQuery("items.name", "alice"),
    inner_hits=inner_hits,
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
for search_hit in response.search_hits:
    for inner_hit in search_hit.search_inner_hits:
        for child_hit in inner_hit.search_hits:
            print(child_hit.row)
            print(child_hit.highlight_result.highlight_fields)