Ao executar uma consulta com caractere curinga, use o asterisco () e o ponto de interrogação (?) como caracteres curinga para buscar dados. O asterisco () corresponde a uma string de qualquer comprimento no início, meio ou fim do termo de pesquisa. O ponto de interrogação (?) substitui um único caractere em uma posição específica. A string pode começar com asterisco () ou ponto de interrogação (?). Por exemplo, ao pesquisar pela string "tablee", o termo "tablestore" é correspondido.
Se o padrão de consulta for *word* (equivalente a WHERE field_a LIKE '%word%' em SQL), use o recurso de consultas com caractere curinga baseadas em token para obter melhor desempenho. Essa abordagem mantém a performance mesmo com o aumento do volume de dados.
Para usar o operador NOT LIKE, combine WildcardQuery com must_not_queries de BoolQuery.
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 |
|
query |
Tipo da consulta. Defina o parâmetro query como WildcardQuery. |
|
field_name |
Nome da coluna a ser consultada. |
|
value |
String contendo caracteres curinga. O comprimento máximo permitido é de 32 caracteres. |
|
table_name |
Nome da tabela de dados. |
|
index_name |
Nome do índice de pesquisa. |
|
limit |
Número máximo de linhas retornadas pela consulta. |
|
get_total_count |
Indica se o número total de linhas correspondentes deve ser retornado. Valor padrão: False. Definir o parâmetro get_total_count como true impacta o desempenho da consulta. |
|
ColumnsToGet |
Determina se todas as colunas das linhas correspondentes aos critérios da consulta serão retornadas.
|
Exemplos
O código abaixo demonstra como consultar linhas em que o valor da coluna Col_Keyword corresponda ao padrão 'tablestor*'.
-
Tablestore SDK for Python V5.2.1 ou posterior
Por padrão, ao usar o Tablestore SDK for Python V5.2.1 ou superior para executar uma consulta com caractere curinga, um objeto SearchResponse é retornado. Veja um exemplo de solicitação:
query = WildcardQuery('Col_Keyword', 'tablestor*') 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 pagination is required, we recommend that you use the next_token parameter because this method has no limits on the pagination 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))Use o exemplo a seguir para obter resultados no formato Tuple:
query = WildcardQuery('Col_Keyword', 'tablestor*') 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() -
Versões do Tablestore SDK for Python anteriores à 5.2.1
Em versões anteriores à 5.2.1 do Tablestore SDK for Python, consultas com caractere curinga retornam resultados do tipo Tuple por padrão. Confira o exemplo de solicitação abaixo:
query = WildcardQuery('Col_Keyword', 'tablestor*') 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
-
Ao consultar dados com um índice de pesquisa, os seguintes métodos estão disponíveis: consulta de termo, consulta de termos, consulta match all, consulta match, consulta match phrase, consulta de prefixo, consulta de intervalo, consulta com caractere curinga, consulta geográfica, consulta booleana, consulta vetorial KNN, consulta aninhada e consulta exists. Use esses métodos para buscar dados sob múltiplas dimensões conforme as necessidades do seu negócio.
Os recursos de ordenação e paginação permitem classificar ou paginar as linhas correspondentes aos critérios da consulta. Para mais detalhes, consulte Ordenação e paginação.
O recurso collapse (distinct) agrupa o conjunto de resultados com base em uma coluna específica, garantindo que dados do tipo especificado apareçam apenas uma vez nos resultados da consulta. Para mais informações, consulte Collapse (distinct).
Para analisar dados em uma tabela, use o recurso de agregação da operação Search ou execute instruções SQL. É possível obter valores mínimos e máximos, somas e contagem total de linhas, por exemplo. Consulte Agregação e Consulta SQL para mais detalhes.
Caso precise obter todas as linhas correspondentes sem necessidade de ordenação, chame as operações ParallelScan e ComputeSplits para usar o recurso de varredura paralela. Saiba mais em Varredura paralela.