Em uma consulta com curinga, use os caracteres curinga asterisco () e ponto de interrogação (?) para pesquisar 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" será encontrado.
Se o padrão de consulta for *word* (equivalente a WHERE field_a LIKE '%word%' em SQL), utilize o recurso de Consultas com curinga baseadas em token para obter melhor desempenho. Esse método mantém a performance mesmo com o aumento do volume de dados.
Para executar uma busca NOT LIKE, use um WildcardQuery combinado ao parâmetro mustNotQueries de um BoolQuery. Para mais detalhes, consulte Consultas combinadas.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Tabela de dados criada e preenchida. Consulte Criar uma tabela de dados e Gravar dados.
Índice de pesquisa criado para a tabela de dados. Consulte Criar índices de pesquisa.
Parâmetros
|
Parâmetro |
Descrição |
|
TableName |
Nome da tabela de dados. |
|
IndexName |
Nome do índice de pesquisa. |
|
query |
Tipo da consulta. Defina como WildcardQuery. |
|
FieldName |
Nome da coluna a ser consultada. |
|
Value |
String contendo caracteres curinga. O tamanho máximo permitido é de 32 caracteres. |
|
ColumnsToGet |
Define se todas as colunas de cada linha correspondente devem ser retornadas. Por padrão, ReturnAll é false, indicando que nem todas as colunas são devolvidas. Quando ReturnAll é false, utilize ColumnsToGet para especificar quais colunas retornar. Caso nenhuma coluna seja definida, apenas as colunas de chave primária serão incluídas no resultado. Ao definir ReturnAll como true, o sistema retorna todas as colunas disponíveis. |
Código de exemplo
O exemplo abaixo demonstra como pesquisar na tabela linhas em que o valor da coluna Col_Keyword corresponda a "hang*u":
/**
* Search the table for rows in which the value of the Col_Keyword column matches "hang*u".
*/
func WildcardQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.WildcardQuery{} // Set the query type to WildcardQuery.
query.FieldName = "Col_Keyword"
query.Value = "hang*u"
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
searchRequest.SetSearchQuery(searchQuery)
// Return all columns in the rows that meet the query conditions.
searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
ReturnAll:true,
})
searchResponse, err := client.Search(searchRequest)
if err != nil {
fmt.Printf("%#v", err)
return
}
fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Check whether all rows that meet the query conditions are returned.
fmt.Println("TotalCount: ", searchResponse.TotalCount) // Specify that the total number of matched rows instead of the number of returned rows is displayed.
fmt.Println("RowCount: ", len(searchResponse.Rows))
for _, row := range searchResponse.Rows {
jsonBody, err := json.Marshal(row)
if err != nil {
panic(err)
}
fmt.Println("Row: ", string(jsonBody))
}
}
Perguntas frequentes
Referências
-
O índice de pesquisa oferece diversos métodos de consulta: consulta por termo, consulta por termos, match all query, match query, match phrase query, consulta por prefixo, consulta por intervalo, consulta com curinga, consulta geográfica, consulta booleana, consulta vetorial KNN, nested query e exists query. Escolha o método mais adequado às necessidades do seu negócio para buscar dados em múltiplas dimensões.
Utilize os recursos de ordenação e paginação para organizar as linhas que atendem aos critérios de busca. Para mais detalhes, consulte Ordenação e paginação.
Aplique o recurso de collapse (distinct) para agrupar resultados com base em uma coluna específica, garantindo que dados desse tipo apareçam apenas uma vez na resposta. Saiba mais em Collapse (deduplicação).
Para analisar dados de uma tabela, utilize a funcionalidade de agregação da operação Search ou execute instruções SQL. É possível obter valores mínimos e máximos, somatórias e contagem total de linhas. Consulte Agregação e Consulta SQL.
Caso precise recuperar todas as linhas correspondentes sem ordenação, chame as operações ParallelScan e ComputeSplits para usar a varredura paralela. Mais informações em Realizar varredura paralela.