Use o Tablestore SDK for Python para filtrar dados com base na existência de um campo indexado específico.
Pré-requisitos
Instale o Tablestore SDK for Python e inicialize um cliente.
Descrição
A consulta Exists, também chamada de consulta NULL, corresponde a linhas em que um campo indexado especificado existe. Um campo não existe se a coluna correspondente não foi gravada na tabela. Arrays vazios também são tratados como campos inexistentes. Para consultar um campo Nested ou um de seus campos filhos, envolva ExistsQuery em NestedQuery. Para corresponder a linhas em que o campo não existe, adicione ExistsQuery a BoolQuery.must_not_queries. Ao chamar o método search, defina o tipo de consulta como ExistsQuery.
ExistsQuery(field_name)
O exemplo a seguir consulta linhas nas quais o campo city existe e retorna até 10 linhas, além da contagem total de linhas correspondentes.
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
Solicitação de busca
O método search contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
table_name (obrigatório) |
|
Nome da tabela de dados. |
|
index_name (obrigatório) |
|
Nome do índice de busca. |
|
search_query (obrigatório) |
|
Condição de consulta e configurações comuns de busca. |
|
columns_to_get (opcional) |
|
Configuração das colunas de retorno. Se este parâmetro não for especificado, apenas as colunas de chave primária serão retornadas. |
|
routing_keys (opcional) |
|
Lista de valores de chave primária para campos de roteamento personalizado. Não é necessário especificar este parâmetro se o roteamento personalizado não estiver configurado. |
|
timeout_s (opcional) |
|
Tempo limite da solicitação em segundos. Se este parâmetro não for especificado, o tempo limite no nível do cliente será usado. |
Configuração da consulta
search_query é do tipo SearchQuery e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
query (obrigatório) |
|
Condição da consulta. Defina este parâmetro como |
|
sort (opcional) |
|
Ordem de classificação dos resultados da consulta. Para mais informações, consulte Sort and paginate results. |
|
get_total_count (opcional) |
|
Especifica se o número total de linhas correspondentes deve ser retornado. Valor padrão: |
|
next_token (opcional) |
|
Token de paginação. Defina este parâmetro como |
|
offset (opcional) |
|
Deslocamento a partir do qual a consulta atual começa. Use este parâmetro para paginação superficial. |
|
limit (opcional) |
|
Número máximo de linhas a retornar. Se este parâmetro for definido como |
|
aggs (opcional) |
|
Configurações de agregação. Para mais informações, consulte Aggregation. |
|
group_bys (opcional) |
|
Configurações de agrupamento. Para mais informações, consulte Aggregation. |
|
collapse_field (opcional) |
|
Configuração de colapso de resultados, que remove duplicatas com base em um campo especificado. Para mais informações, consulte Collapse query results. |
Condição de consulta
search_query.query é do tipo ExistsQuery e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
field_name (obrigatório) |
|
Nome do campo indexado a ser consultado. |
Colunas de retorno
columns_to_get é do tipo ColumnsToGet e contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
column_names (opcional) |
|
Nomes das colunas de atributo a retornar. Especifique este parâmetro apenas quando |
|
return_type (opcional) |
|
Modo de retorno das colunas. |
Resposta
O método search retorna SearchResponse. A tabela a seguir descreve os campos principais.
|
Campo |
Tipo |
Descrição |
|
rows |
|
Linhas retornadas pela consulta atual. O número de linhas não excede |
|
next_token |
|
Token para a próxima página. Se este campo não estiver vazio, passe-o para a próxima solicitação para continuar a leitura. |
|
total_count |
|
Número de linhas correspondentes. O valor depende da configuração |
|
is_all_succeed |
|
Indica se todas as partições do índice foram consultadas. Se o valor for |
|
agg_results |
|
Resultados da agregação. Este campo estará vazio se |
|
group_by_results |
|
Resultados do agrupamento. Este campo estará vazio se |
|
search_hits |
|
Resultados da busca, incluindo informações estendidas, como pontuações de relevância, destaques e linhas filhas correspondentes. |
Resposta compatível com tupla
A partir do Tablestore SDK for Python 5.2.0, as APIs de busca retornam objetos de resposta em vez de tuplas. A versão 5.1.0 e anteriores retornam tuplas diretamente. Na versão 5.2.1 e posteriores, chame SearchResponse.v1_response() para obter uma tupla compatível com versões anteriores. Para novos códigos, acesse os atributos de SearchResponse diretamente para evitar erros de desempacotamento caso os campos da resposta sejam estendidos.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()