Todos os produtos
Search
Central de documentação

Tablestore:Prefix query

Última atualização: Jul 03, 2026

Use a consulta de prefixo para buscar dados correspondentes a um prefixo especificado. Se a coluna usada na condição de prefixo for do tipo TEXT, o sistema a tokeniza. Uma linha atende aos critérios da consulta quando pelo menos um token contém o prefixo definido.

Pré-requisitos

Parâmetros

Parâmetro

Descrição

field_name

Nome da coluna a consultar.

prefix

Prefixo a corresponder.

Se a coluna for do tipo TEXT, o sistema a tokeniza primeiro. A linha corresponde à consulta se pelo menos um token contiver o prefixo especificado.

query

Tipo da consulta. Defina este parâmetro como PrefixQuery.

table_name

Nome da tabela de dados.

index_name

Nome do índice de busca.

limit

Número máximo de linhas a retornar em uma única consulta.

Para contar as linhas correspondentes sem recuperar dados, defina este parâmetro como 0.

get_total_count

Indica se o sistema deve retornar o número total de linhas que atendem às condições da consulta. Valor padrão: false.

Definir este parâmetro como true reduz o desempenho da consulta.

columns_to_get

Controla quais colunas retornar para cada linha correspondente. Configure este parâmetro com os campos return_type e column_names.

  • ColumnReturnType.SPECIFIED: Retorna apenas as colunas listadas em column_names.

  • ColumnReturnType.ALL: Retorna todas as colunas.

  • ColumnReturnType.NONE: Retorna apenas as colunas de chave primária.

Exemplos

Os exemplos a seguir mostram como consultar linhas cujo valor na coluna Col_Keyword começa com tablestore.

  • Executar consulta de prefixo com o Tablestore SDK for Python V5.2.1 ou posterior

    O Tablestore SDK for Python V5.2.1 e versões posteriores retornam um objeto SearchResponse por padrão. O código a seguir mostra um exemplo de solicitação:

    query = PrefixQuery('Col_Keyword', 'tablestore')
    search_response = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',  
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )
    print('request_id : %s' % search_response.request_id)
    print('is_all_succeed : %s' % search_response.is_all_succeed)
    print('total_count : %s' % search_response.total_count)
    print('rows : %s' % search_response.rows)
    
    # # If deep paging is required, use next_token to avoid limits on paging depth.
    # all_rows = []
    # next_token = None
    # # first round
    # search_response = client.search(
    #     '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
    #     SearchQuery(query, next_token=next_token, limit=100, get_total_count=True),
    #     columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL))
    # all_rows.extend(search_response.rows)
    # 
    # # loop
    # while search_response.next_token:
    #     search_response = client.search(
    #         '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
    #         SearchQuery(query, next_token=search_response.next_token, limit=100, get_total_count=True),
    #         columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL))
    #     all_rows.extend(search_response.rows)
    # print('Total rows:%s' % len(all_rows))

    Para retornar os resultados como tupla, chame .v1_response() no resultado:

    query = PrefixQuery('Col_Keyword', 'tablestore')
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
  • Executar consulta de prefixo com versão do Tablestore SDK for Python anterior à 5.2.1

    Versões do Tablestore SDK for Python anteriores à V5.2.1 retornam resultados como tupla por padrão. O código a seguir mostra um exemplo de solicitação:

    query = PrefixQuery('Col_Keyword', 'tablestore')
    rows, next_token, total_count, is_all_succeed = client.search(
       '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )

FAQ

Referências