Todos os produtos
Search
Central de documentação

Tablestore:Wildcard query

Última atualização: Aug 20, 2026

Use a consulta com curinga no Tablestore SDK for Go para corresponder a valores ou tokens por meio de asteriscos (*) e pontos de interrogação (?).

Pré-requisitos

Instale o Tablestore Go SDK e inicialize um cliente.

Descrição

A consulta com curinga usa um asterisco (*) para corresponder a zero ou mais caracteres e um ponto de interrogação (?) para corresponder a exatamente um caractere. Em campos do tipo Text, a consulta se aplica aos termos tokenizados. A correspondência diferencia maiúsculas de minúsculas, e a string de consulta pode conter até 32 caracteres.

func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)

O exemplo a seguir consulta dados e retorna até 10 linhas, além do número total de linhas correspondentes.

tableName := "example_table"
indexName := "example_index"

query := &search.WildcardQuery{FieldName: "category", Value: "book-*"}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10).
    SetGetTotalCount(true)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   tableName,
    IndexName:   indexName,
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.TotalCount)
fmt.Println(response.Rows)

Parâmetros

Requisição de consulta

request é do tipo tablestore.SearchRequest e contém os seguintes parâmetros.

Nome

Tipo

Descrição

TableName (obrigatório)

string

Nome da tabela de dados.

IndexName (obrigatório)

string

Nome do índice de pesquisa.

SearchQuery (obrigatório)

search.SearchQuery

Condição de consulta e configurações comuns de consulta.

ColumnsToGet (opcional)

*tablestore.ColumnsToGet

Configuração das colunas de retorno. Se este parâmetro for omitido, apenas as colunas de chave primária serão retornadas.

RoutingValues (opcional)

[]*tablestore.PrimaryKey

Valores de chave primária para campos de roteamento personalizado. Omita este parâmetro caso o roteamento personalizado não esteja configurado.

TimeoutMs (opcional)

*int32

Tempo limite da requisição em milissegundos.

Configuração de consulta

Crie uma configuração de consulta chamando search.NewSearchQuery() e configure-a usando os métodos abaixo.

Nome

Tipo

Descrição

SetQuery (obrigatório)

search.Query

Define a condição de consulta.

SetOffset (opcional)

int32

Especifique a posição inicial. Valor padrão: 0. Na paginação baseada em offset, a soma de Offset + Limit não pode exceder 100.000.

SetLimit (opcional)

int32

Determina o número máximo de linhas a retornar. Valor padrão: 10. Valor máximo: 100. O valor 0 não retorna nenhuma linha.

SetHighlight (opcional)

*search.Highlight

Configure resumos e destaque para campos Text. Para mais informações, consulte Summary and highlighting.

SetCollapse (opcional)

*search.Collapse

Agrupa resultados de consulta. Para mais informações, consulte Collapse query results.

SetSort (opcional)

*search.Sort

Define a ordem de classificação dos resultados. Para mais informações, consulte Sort and paginate results.

SetGetTotalCount (opcional)

bool

Indica se todas as linhas correspondentes devem ser contadas. Valor padrão: false.

SetToken (opcional)

[]byte

Especifique o valor NextToken retornado pela resposta anterior. Este método limpa o Sort, pois o token já contém as condições de ordenação da página anterior. Não especifique Offset ao usar paginação baseada em token.

SetSearchFilter (opcional)

*search.SearchFilter

Aplica um filtro pós-consulta. Para mais informações, consulte Use post-query filters.

Aggregation (opcional)

...search.Aggregation

Configure agregações. Para mais informações, consulte Aggregation.

GroupBy (opcional)

...search.GroupBy

Configure agrupamentos. Para mais informações, consulte Aggregation.

Condição de consulta

A consulta é do tipo search.WildcardQuery e contém os seguintes parâmetros.

Nome

Tipo

Descrição

FieldName (obrigatório)

string

Nome do campo de índice a consultar.

Value (obrigatório)

string

String de consulta com curinga, que pode conter até 32 caracteres.

Colunas a retornar

request.ColumnsToGet é do tipo tablestore.ColumnsToGet e contém os seguintes parâmetros.

Nome

Tipo

Descrição

Columns (opcional)

[]string

Colunas de atributo a retornar. Este parâmetro só tem efeito quando ReturnAll e ReturnAllFromIndex são ambos false.

ReturnAll (opcional)

bool

Indica se todas as colunas de atributo da tabela de dados devem ser retornadas. Valor padrão: false.

ReturnAllFromIndex (opcional)

bool

Indica se todas as colunas de atributo indexadas devem ser retornadas. Valor padrão: false. Não defina este parâmetro e ReturnAll como true simultaneamente.

Resposta

O método Search retorna um valor tablestore.SearchResponse. A tabela a seguir descreve os principais campos de negócio.

Nome

Tipo

Descrição

TotalCount

int64

Número total de linhas correspondentes. O valor depende de SetGetTotalCount.

Rows

[]*tablestore.Row

Linhas retornadas pela consulta atual. A quantidade não excede o valor especificado por SetLimit.

SearchHits

[]*tablestore.SearchHit

Resultados da pesquisa. Leia este campo ao usar destaque, inner hits aninhados ou pontuações de relevância.

NextToken

[]byte

Token para a próxima página. Se o valor não estiver vazio, passe-o para a próxima consulta.

IsAllSuccess

bool

Indica se todas as partições do índice foram consultadas. Se o valor for false, resultados parciais são retornados e TotalCount pode ser menor que o número real de linhas correspondentes.

AggregationResults

search.AggregationResults

Resultados da agregação.

GroupByResults

search.GroupByResults

Resultados do agrupamento.

Exemplos

Melhorar o desempenho de consultas de substring

Para padrões de consulta como *word*, configure o campo Text com o analisador fuzzy ao criar o índice de pesquisa e use uma consulta match phrase para consultar o campo. Essa abordagem geralmente oferece melhor desempenho do que uma consulta com curinga para correspondência de substrings. Para regras de correspondência e limites, consulte Token-based wildcard queries.

O exemplo a seguir cria um índice de pesquisa que contém o campo file_name e configure o analisador fuzzy para esse campo.

analyzer := tablestore.Analyzer_Fuzzy
fieldSchema := &tablestore.FieldSchema{
    FieldName:         proto.String("file_name"),
    FieldType:         tablestore.FieldType_TEXT,
    Index:             proto.Bool(true),
    Analyzer:          &analyzer,
    AnalyzerParameter: tablestore.FuzzyAnalyzerParameter{},
}

request := &tablestore.CreateSearchIndexRequest{
    TableName: "example_table",
    IndexName: "example_index",
    IndexSchema: &tablestore.IndexSchema{
        FieldSchemas: []*tablestore.FieldSchema{fieldSchema},
    },
}

_, err := client.CreateSearchIndex(request)
if err != nil {
    log.Fatal(err)
}

Após a sincronização dos dados do índice, use uma MatchPhraseQuery para consultar linhas nas quais o campo file_name contenha word em qualquer posição.

query := &search.MatchPhraseQuery{
    FieldName: "file_name",
    Text:      "word",
}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   "example_table",
    IndexName:   "example_index",
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.Rows)

Excluir linhas que correspondem a um padrão com curinga

Para implementar o equivalente ao NOT LIKE do SQL, adicione uma WildcardQuery em BoolQuery.MustNotQueries.

wildcardQuery := &search.WildcardQuery{
    FieldName: "category",
    Value:     "book-*",
}
query := &search.BoolQuery{
    MustNotQueries: []search.Query{wildcardQuery},
}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   "example_table",
    IndexName:   "example_index",
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.Rows)