Todos os produtos
Search
Central de documentação

Tablestore:Search index

Última atualização: Jul 03, 2026

Um search index utiliza índices invertidos e column stores para oferecer suporte a consultas multidimensionais e análises estatísticas em big data. Use search indexes para consultas em colunas que não são chave primária, consultas booleanas, consultas difusas, busca de texto completo, busca vetorial e agregações como max, min, count e group by.

Informações gerais

Search indexes aplicam-se apenas aos modelos de tabela ampla .

Search indexes, bancos de dados e mecanismos de busca resolvem problemas complexos de consulta em big data, mas diferem nas seguintes formas:

Exceto por joins, transações e análise de relevância, o Tablestore oferece os recursos tanto de bancos de dados quanto de sistemas de busca. Ele combina a alta confiabilidade de dados de um banco de dados com as capacidades avançadas de consulta de um sistema de busca, substituindo a arquitetura comum database + search engine.

Se o seu cenário não envolver joins, transações ou análise complexa de relevância, use um search index do Tablestore.

表格存储与数据库及搜索系统的主要的区别

Visão geral do índice

Um search index utiliza índices invertidos e column stores para resolver problemas de consulta multidimensional e análise estatística para big data. Ele suporta consultas em colunas que não são chave primária, consultas por prefixo, consultas difusas, consultas booleanas, consultas aninhadas, consultas geográficas, busca de texto completo, busca vetorial e agregação estatística (max, min, count, sum, avg, distinct_count, group_by, percentiles e histogram).

A figura a seguir mostra as estruturas de índice invertido, column store e índice espacial multidimensional utilizadas por um search index.

image.png

Diferentemente dos índices de bancos de dados tradicionais (como MySQL), um search index não se limita à regra de correspondência de prefixo mais à esquerda. Na maioria dos casos, basta um único search index por tabela. Por exemplo, uma tabela de alunos com colunas como nome, ID do aluno, gênero, série, turma e endereço residencial requer apenas um search index para suportar consultas combinadas como alunos chamados John Doe na terceira série, alunos do sexo masculino cujo endereço residencial está a menos de 1 km ou alunos da Turma 2 da 3ª Série que moram em uma área residencial específica.

Comparação de índices

O Tablestore suporta consultas por chave primária em tabelas de dados, além de dois tipos de índice para acelerar consultas: secondary index e search index. A tabela a seguir compara esses três métodos de consulta.

Método de consulta

Princípio

Cenário

Chave primária

Uma tabela de dados funciona como um grande mapa. Você só pode consultar dados pela chave primária.

Adequado para cenários onde você conhece a chave primária completa ou um prefixo da chave.

Secondary index

Cria tabelas de índice cujas colunas de chave primária estendem a capacidade de consulta da tabela de dados para diferentes colunas.

Recomendado quando as colunas de consulta são predeterminadas, a quantidade de colunas é pequena e você conhece a chave primária completa ou um prefixo da chave.

Search index

Utiliza estruturas como índices invertidos, árvores BKD e column stores para fornecer recursos avançados de consulta.

Indicado para todos os cenários de consulta e análise além da cobertura de chave primária e secondary index: consultas em colunas que não são chave primária, consultas booleanas em quaisquer colunas, consultas de relacionamento, busca de texto completo, consultas geográficas, consultas difusas, consultas aninhadas, consultas de valor NULL e agregação estatística.

Cenários

Search indexes são amplamente utilizados para consulta e análise de dados em diversos sistemas de aplicação. A tabela a seguir lista cenários comuns.

Sistema de aplicação

Exemplo de cenário

Plataforma de e-commerce

Implemente categorização de produtos e filtragem de atributos para ajudar os usuários a pesquisar e filtrar produtos rapidamente.

Aplicativo social

Consulte relacionamentos de seguidores e amigos entre usuários, ou recomende e conecte usuários com base em tags de interesse.

Análise de logs

Execute buscas por palavras-chave e consultas por intervalo de tempo para localizar problemas rapidamente e analisar dados de log.

Análise de dados de IoT

Consulte e analise dados de dispositivos. Por exemplo, filtre e conte dados por tipo de dispositivo ou localização geográfica.

Monitoramento de desempenho de aplicações

Agrege e consulte dados de métricas. Por exemplo, filtre e resuma dados por intervalo de tempo ou nome da aplicação.

Serviço baseado em localização

Execute consultas geográficas e buscas próximas para fornecer informações sobre lojas, atrações e serviços nas proximidades.

Mecanismo de busca de texto

Realize busca de texto completo e classificação por relevância para encontrar documentos, artigos e outros conteúdos rapidamente.

Recursos

Lista de recursos

A tabela a seguir lista os recursos do search index.

Recurso

Descrição

Documento

Consulta em qualquer coluna (incluindo colunas de chave primária e colunas que não são chave primária)

Consulte dados por qualquer coluna. Adequado para a maioria dos cenários de consulta.

Se consultas por chave primária ou prefixo não atenderem às suas necessidades, crie um search index com os campos desejados e consulte pelos valores das colunas.

Qualquer consulta de search index, como uma consulta básica

Consulta booleana

Combine vários campos para filtragem eficiente. Ideal para sistemas de pedidos, análise de logs e personas de usuários.

Em um banco de dados relacional, uma tabela com dezenas de campos pode exigir centenas de índices para cobrir todas as combinações de campos. Combinações ausentes resultam em consultas ineficientes.

Com o Tablestore, um único search index cobre todas as combinações de campos. Adicione ao índice os campos que você pode consultar e combine-os livremente usando a lógica And, Or e Not.

Consulta booleana

Consulta geográfica

Os dispositivos móveis tornaram os dados de localização geográfica cada vez mais valiosos. Aplicações de redes sociais, entrega de comida, esportes e Internet dos Veículos (IoV) exigem consultas baseadas em localização.

Search indexes suportam os seguintes recursos de consulta geográfica:

  • Near: Consulta pontos dentro de uma distância especificada de uma origem. Exemplo: o recurso "Pessoas Próximas" em redes sociais.

  • Within: Consulta pontos dentro de uma área retangular ou poligonal.

Se sua aplicação requer consultas baseadas em localização, um search index do Tablestore fornece uma solução completa sem a necessidade de bancos de dados ou sistemas de busca adicionais.

Índice de texto completo

Encontre dados contendo uma frase especificada. Adequado para análise de big data, busca de conteúdo, gestão de conhecimento, análise de mídias sociais, análise de logs, sistemas de chat com IA, revisões de conformidade e recomendações personalizadas.

Search indexes usam tokenização para busca de texto completo. Eles fornecem relevância BM25 básica, mas não relevância personalizada. Para necessidades complexas de busca por relevância, use um sistema de busca dedicado; caso contrário, um search index é suficiente.

Cinco tipos de tokenização estão disponíveis: palavra única, delimitador, semântica mínima, semântica máxima e difusa. Para destacar palavras-chave nos resultados, utilize o recurso de resumo e destaque.

Busca vetorial

Search indexes suportam busca vetorial para consultas eficientes de vizinhos mais próximos aproximados em conjuntos de dados em grande escala. Adequado para geração aumentada por recuperação (RAG), sistemas de recomendação, detecção de similaridade (imagens, vídeos e fala) e processamento de linguagem natural.

AISearch

Consulta difusa

Search indexes fornecem consultas por curinga, prefixo e sufixo para correspondência difusa em diferentes cenários.

  • Consulta por curinga: Semelhante à sintaxe like em bancos de dados relacionais. Suporta dois curingas: asterisco (*) e ponto de interrogação (?).

    Para padrões word, utilize uma consulta por curinga baseada em tokenização (tokenização difusa combinada com consulta match phrase) para obter melhor desempenho.

  • Consulta por prefixo: Corresponde ao conteúdo pelo prefixo. Por exemplo, consultar apple corresponde a apple6s e applexr. Suporta chinês, inglês e outros idiomas.

  • Consulta por sufixo: Corresponde ao conteúdo pelo sufixo. Por exemplo, consulte todos os números de telefone celular que terminam com 1234.

Consulta de existência de coluna (consulta NULL)

Verifique se uma coluna tem um valor nulo. Adequado para verificações de integridade de dados e limpeza de dados.

Consulta de existência de coluna

Consulta aninhada

Além de estruturas planas, os dados de aplicações frequentemente possuem estruturas aninhadas multiníveis. Por exemplo, um sistema de marcação de imagens armazena imagens com múltiplas entidades (casas, carros, pessoas), cada uma com posição, tamanho e peso (pontuação) diferentes. Cada imagem mapeia para várias tags, e cada tag possui um nome e uma pontuação de peso.

Para filtrar imagens por condições de tag, utilize a consulta de tipo aninhado. As tags de imagem são armazenadas no formato JSON:

{
 "tags": [
   {
      "name": "car",
      "score": 0,78
   },
   {
      "name": "tree",
      "score": 0,24
   }
 ]
}

Consultas de tipo aninhado lidam com dados que possuem relacionamentos lógicos multiníveis, proporcionando flexibilidade para modelagem complexa de dados.

Para estruturas de dados aninhadas complexas (como JSON), utilize o recurso de resumo e destaque para localizar com precisão as informações necessárias.

Deduplicação

Search indexes deduplicam resultados de consulta para melhorar a diversidade. A deduplicação limita quantas vezes um valor de atributo específico aparece em um único conjunto de resultados. Por exemplo, ao pesquisar por laptop em uma plataforma de e-commerce, a deduplicação evita que a primeira página seja dominada por uma única marca.

Collapse (deduplicação)

Ordenação

O Tablestore ordena os dados pela chave primária em ordem alfabética por padrão. Para ordenar por outros campos, utilize o recurso de ordenação de um search index.

Search indexes suportam ordem crescente ou decrescente, ordenação por condição única e ordenação por múltiplas condições. Toda ordenação é global. Por padrão, os resultados do search index são ordenados pela chave primária em ordem alfabética.

Número total de linhas

Ao consultar dados com um search index, você pode retornar o número de linhas correspondentes. Isso é útil para validação e operações de dados.

  • Uma condição de consulta vazia corresponde a todos os dados indexados. O total retornado é igual ao número de linhas indexadas na tabela de dados.

  • Se a gravação de dados foi interrompida e todos os dados estão indexados, o total é igual ao número de linhas na tabela de dados.

Agregação estatística

Search indexes fornecem funções de agregação comuns: Max, Min, Avg, Sum, Count, DistinctCount, GroupBy, Percentile e Histogram. Estas atendem às necessidades estatísticas básicas para análises leves.

Agregação estatística

Regiões suportadas

Atualmente, o recurso search index está disponível nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Guangzhou), China (Chengdu), China (Hong Kong), Japão (Tóquio), Singapura, Malásia (Kuala Lumpur), Indonésia (Jacarta), Filipinas (Manila), Tailândia (Bangkok), Alemanha (Frankfurt), Reino Unido (Londres), EUA (Vale do Silício), EUA (Virgínia), Arábia Saudita (Riade - Região Parceira), e . O recurso de busca vetorial ainda não é suportado na região EUA (Vale do Silício).

Recuperação de desastres

Em regiões com capacidades de recuperação de desastres de zona, os search indexes fornecem armazenamento redundante de zona por padrão. Os dados são armazenados em várias zonas dentro da região. Se uma única zona falhar, os serviços de leitura e gravação continuam sem interrupção.

Atualmente, o search index suporta armazenamento redundante de zona nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Hong Kong), Japão (Tóquio), Singapura, Indonésia (Jacarta), Alemanha (Frankfurt), e .

Ciclo de vida dos dados

Se sua tabela de dados não tiver operações UpdateRow, você poderá usar o TTL do search index. Gestão de ciclo de vida.

Se você precisar reter dados apenas por um período específico e o campo de tempo não exigir atualizações, implemente o TTL fragmentando tabelas por tempo.

Dimensão

Fragmentação de tabela por tempo

Princípio

Fragmente tabelas por um intervalo fixo (dia, semana, mês ou ano). Crie um search index para cada tabela e retenha as tabelas de dados pela duração necessária.

Por exemplo, para reter dados por seis meses, armazene os dados de cada mês em uma tabela separada (table_1 a table_6) com seu próprio search index. Todo mês, exclua a tabela referente a seis meses atrás.

Ao consultar, se o intervalo de tempo cair dentro de uma única tabela, consulte apenas essa tabela. Se abranger várias tabelas, consulte cada uma e mescle os resultados.

Regra

Uma única tabela (índice único) não deve exceder 50 bilhões de linhas. O desempenho da consulta é ideal quando a contagem de linhas permanece abaixo de 20 bilhões.

Vantagens

  • Controle a duração da retenção de dados gerenciando o número de tabelas retidas.

  • O desempenho da consulta escala com o volume de dados. A fragmentação limita o tamanho de cada tabela, resultando em melhor desempenho e evitando tempos limite de consulta.

Versões de dados

Search indexes não suportam múltiplas versões de dados. Você não pode criar um search index para uma tabela de dados com múltiplas versões habilitadas.

Em uma tabela de versão única, se você personalizar o timestamp para cada gravação, gravar dados com um número de versão menor após um maior pode sobrescrever a versão maior.

Os dados retornados pelas solicitações Search e ParallelScan não incluem necessariamente a propriedade timestamp.

Limites

Search indexes sincronizam dados da tabela de dados de forma assíncrona, portanto, consultas em tempo real não são possíveis. A latência típica é de até 3 segundos. Limites do search index.

Faturamento

Search indexes são cobrados pelo espaço de armazenamento ocupado pelos dados do índice e pelos recursos de computação consumidos para consultas e análises. Visão geral do faturamento.

Desenvolvimento e integração

Referência da API

Search indexes fornecem operações de API para gestão de índices e consulta de dados. A consulta de dados inclui a API Search de uso geral e a API ParallelScan para exportação de dados. O ParallelScan sacrifica alguns recursos (ordenação, agregação) para obter maior desempenho e throughput.

Categoria

API

Descrição

Gestão de índices

CreateSearchIndex

Cria um search index.

UpdateSearchIndex

Atualiza a configuração de um search index, incluindo seu tempo de vida (TTL) e esquema de índice.

DescribeSearchIndex

Obtém a descrição detalhada de um search index.

ListSearchIndex

Lista os search indexes.

DeleteSearchIndex

Exclui um search index.

Consulta de dados

Search

API de consulta com recursos completos. Suporta todos os recursos do search index, incluindo funções de consulta, ordenação e agregação estatística. Os resultados são retornados na ordem especificada.

  • Funções de consulta: consulta em coluna que não é chave primária, consulta de existência de coluna, consulta difusa, consulta booleana, consulta aninhada, consulta geográfica, busca de texto completo, busca vetorial

  • Collapse (deduplicação)

  • Ordenação

  • Agregação estatística

  • Número total de linhas

ParallelScan

API de exportação de dados com suporte a varredura paralela. Inclui todas as funções de consulta, mas omite ordenação e agregação estatística. Retorna todos os dados correspondentes com maior velocidade.

Com uma única concorrência, o throughput do ParallelScan é 5 vezes superior ao da API Search.

  • Funções de consulta: consulta em coluna que não é chave primária, consulta de existência de coluna, consulta difusa, consulta booleana, consulta aninhada, consulta geográfica, busca de texto completo

  • Suporta múltiplas consultas concorrentes em uma única solicitação

Ao exportar dados com múltiplas solicitações concorrentes, utilize a API ComputeSplits para obter a concorrência máxima para uma única solicitação ParallelScan.

Métodos de integração

Use os seguintes SDKs ou ferramentas CLI para trabalhar com search indexes.

FAQ

Referências

  • Para consultar e analisar dados com SQL, utilize o recurso de consulta SQL do Tablestore.

    Nota

    Você também pode analisar dados no Tablestore usando motores de computação como MaxCompute, Spark, Hive, HadoopMR, Function Compute ou Flink. Visão geral de computação e análise.

Apêndice: Mapeamento SQL

Alguns recursos do search index mapeiam para funções SQL. A tabela a seguir lista os mapeamentos.

SQL

Search index

Documentação do search index

Show

DescribeSearchIndex

Consultar descrição do search index

Select

Parâmetro ColumnsToGet em qualquer consulta

Qualquer consulta de search index, como uma consulta básica

From

Parâmetro IndexName em qualquer consulta

Importante

Índice único é suportado. Múltiplos índices ainda não são suportados.

Qualquer consulta de search index, como uma consulta básica

Where

Condições em qualquer consulta

Qualquer consulta de search index, como uma consulta básica

Order by

Parâmetro sort em qualquer consulta

Ordenação e paginação

Limit

Parâmetro limit em qualquer consulta

Ordenação e paginação

Delete

  1. Use qualquer consulta para obter a chave primária da linha.

  2. Execute a operação DeleteRow.

  1. Obtenha a chave primária da linha através de qualquer consulta de search index, como uma consulta básica.

  2. Exclua dados pela chave primária.

Like

WildcardQuery

Consulta por curinga

And

operator = and em BoolQuery

Consulta booleana

Or

operator = or em BoolQuery

Not

BoolQuery(mustNotQueries)

Between

RangeQuery

Consulta por intervalo

Null

ExistsQuery

Consulta de existência de coluna

In

TermsQuery

Consulta Terms

Min

Agregação: min

Agregação estatística

Max

Agregação: max

Avg

Agregação: avg

Count

Agregação: count

Count(distinct)

Agregação: distinctCount

Sum

Agregação: sum

Group By

GroupBy