O DynamoDB suporta busca de texto completo?

Não, não nativamente. O DynamoDB não tem busca de texto completo: nada de ranking por relevância, nada de stemming e nada de correspondência aproximada — as ferramentas de string embutidas são comparações exatas, begins_with em chaves de ordenação e filtros de substring com contains. A resposta da AWS é a integração zero-ETL com o Amazon OpenSearch Service, que replica uma tabela para um índice de busca com busca de texto completo, vetorial e semântica.

O que dá para fazer nativamente

  • begins_with em uma chave de ordenação — correspondência eficiente de prefixo dentro de uma partição; a espinha dorsal dos modelos de chave de ordenação hierárquica.
  • contains em uma expressão de filtro — correspondência de substring, mas os filtros rodam depois da leitura, então em um Scan você continua pagando para ler cada item examinado. Veja o guia de estratégias de filtragem para saber quando isso é aceitável.

Nenhum dos dois ordena resultados, tolera erros de digitação ou entende fronteiras de palavras — são predicados de string, não busca.

A mesma consulta, de quatro formas, medida

Carregamos 100 itens (84 KB) com títulos de produto e escaneamos a tabela quatro vezes, mudando apenas o termo de busca:

FiltroCountScannedCountUnidades de leituraCorrespondências
contains(title, "run")310011Shoes for runs · Trail running shoe · Sneaker, runner grade
contains(title, "Run")210011Running shoes · Rungs for a ladder
contains(title, "running")110011Trail running shoe
contains(title, "runing")010011nada

Leia essas linhas como as leria alguém digitando em uma caixa de busca. "run" não encontra Running shoes nem RUNNING SHORTS, porque a comparação diferencia maiúsculas de minúsculas. "Run" recupera Running shoes, continua sem encontrar RUNNING SHORTS e ainda arrasta Rungs for a ladder, porque uma substring não faz ideia de onde uma palavra começa. Nenhuma variação de caixa dessa consulta encontra as três. Tire uma letra e você não recebe absolutamente nada, já que não há alternativa aproximada para a qual degradar.

A última coluna é a parte que custa dinheiro. Cada scan consumiu 11 unidades de leitura, inclusive o que não encontrou nada, porque o filtro roda depois da leitura. A AWS diz isso sem rodeios: "A filter expression is applied after a Scan finishes but before the results are returned. Therefore, a Scan consumes the same amount of read capacity, regardless of whether a filter expression is present." E o diagnóstico da própria AWS para o formato acima: "A high ScannedCount value with few, or no, Count results indicates an inefficient Scan operation."

Ou seja, o preço de uma busca acompanha o tamanho do catálogo, nunca a especificidade da consulta. Ligue isso a uma caixa de busca que busca enquanto você digita e "running shoes" cobra a tabela inteira treze vezes, uma por tecla, para retornar um item.

A resposta nativa da AWS: zero-ETL para o OpenSearch

O plugin do DynamoDB para o OpenSearch Ingestion sincroniza uma tabela com um ou mais índices do OpenSearch: um snapshot inicial é carregado via exportação do DynamoDB para o S3 (PITR obrigatório), e então o DynamoDB Streams replica as mudanças quase em tempo real. O pipeline não consome nada do throughput de leitura ou escrita da sua tabela, então é seguro rodá-lo ao lado do tráfego de produção — e a AWS afirma que a integração habilita busca de texto completo, vetorial e semântica sobre os seus dados do DynamoDB.

Aprofunde-se

Se a sua "busca" é na verdade uma consulta conhecida, corrija o modelo — os guias de estratégias de filtragem e estratégias de chave de ordenação mostram o que as chaves conseguem fazer. Prototipe condições begins_with/contains no expression builder, e baixe o DynoTable para filtrar dados de tabelas ao vivo enquanto você explora.

Referências

Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.

Os quatro scans foram executados em 2026-07-28 no DynamoDB Local 3.3.0 com @aws-sdk/client-dynamodb 3.1095.0 no Node v24.18.0. Count, ScannedCount e as unidades de leitura são os números do próprio motor.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.