Use a consulta de intervalo para buscar dados dentro de um intervalo especificado. Se o tipo da coluna for TEXT, o Tablestore tokeniza a string e usa os tokens para corresponder à palavra-chave. Uma linha atende às condições da consulta quando pelo menos um dos tokens dessa linha corresponde ao intervalo definido.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar um cliente Tablestore.
Tabela de dados criada e preenchida. Para mais informações, consulte Criar uma tabela de dados e Gravar dados.
Índice de pesquisa criado para a tabela de dados. Para mais informações, consulte Criar um índice de pesquisa.
Parâmetros
|
Parâmetro |
Descrição |
|
field_name |
Nome da coluna a ser consultada. |
|
range_from |
Valor inicial da consulta. |
|
range_to |
Valor final da consulta. |
|
include_lower |
Defina se o valor do parâmetro range_from deve ser incluído na resposta. Este parâmetro é do tipo Boolean. |
|
include_upper |
Defina se o valor do parâmetro range_to deve ser incluído na resposta. Este parâmetro é do tipo Boolean. |
|
table_name |
Nome da tabela de dados. |
|
index_name |
Nome do índice de pesquisa. |
|
query |
Tipo da consulta. Defina este parâmetro como RangeQuery. |
|
limit |
Número máximo de linhas a retornar na consulta atual. Para obter apenas a contagem de linhas correspondentes sem recuperar os dados específicos, defina o parâmetro limit como 0. |
|
get_total_count |
Indica se o número total de linhas correspondentes deve ser retornado. O valor padrão é false, o que significa que a contagem total não é retornada. Definir este parâmetro como true pode comprometer o desempenho da consulta. |
|
columns_to_get |
Controla quais colunas retornar para cada linha correspondente. Especifique os campos return_type e column_names neste parâmetro.
|
Exemplos
Os exemplos abaixo demonstram como consultar linhas em que o valor da coluna Col_Keyword está entre 'key100' e 'key200'.
-
Consulta de intervalo com Tablestore SDK for Python V5.2.1 ou posterior
Ao usar o Tablestore SDK for Python V5.2.1 ou posterior, a operação retorna um objeto SearchResponse por padrão. Veja o exemplo de solicitação:
query = RangeQuery('Col_Keyword', 'key100', 'key200', include_lower=False, include_upper=False) 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, we recommend that you use the next_token parameter because this method has no limits on the 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 obter resultados no formato Tuple, utilize a seguinte solicitação:
query = RangeQuery('Col_Keyword', 'key100', 'key200', include_lower=False, include_upper=False) 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() -
Consulta de intervalo com versões anteriores à 5.2.1 do Tablestore SDK for Python
Nas versões do Tablestore SDK for Python anteriores a 5.2.1, a consulta de intervalo retorna resultados do tipo TUPLE por padrão. O código abaixo ilustra essa chamada:
query = RangeQuery('Col_Keyword', 'key100', 'key200', include_lower=False, include_upper=False) 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
-
O índice de pesquisa oferece diversos métodos de consulta: consulta de termo, consulta de termos, consulta match all, consulta match, consulta match phrase, consulta de prefixo, consulta de intervalo, consulta wildcard, consulta geográfica, consulta booleana, consulta vetorial KNN, consulta aninhada e consulta exists. Combine esses métodos para extrair dados sob múltiplas dimensões conforme sua necessidade de negócio.
Utilize os recursos de ordenação e paginação para organizar as linhas resultantes. Para detalhes, veja Ordenação e paginação.
A funcionalidade de collapse (distinct) permite agrupar resultados com base em uma coluna específica, garantindo que cada valor desse tipo apareça apenas uma vez. Saiba mais em Collapse (distinct).
Para analisar dados da tabela, aproveite as agregações da operação Search ou execute instruções SQL. É possível calcular valores mínimos, máximos, somas e contagens totais. Consulte Agregação e Consulta SQL.
Caso precise recuperar todas as linhas correspondentes sem ordenação, utilize a varredura paralela por meio das operações ParallelScan e ComputeSplits. Mais informações em Varredura paralela.