O OpenSearch pode adicionar dinamicamente novos atributos ao índice. No entanto, depois que o modelo de mapeamento for definido para uma chave específica, você precisará tomar medidas adicionais para alterá-lo. Além disso, se a alteração exigir o reprocessamento de todos os dados na tabela do DynamoDB, você precisará tomar medidas para iniciar uma nova exportação.
nota
Em todas essas opções, você ainda poderá ter problemas se sua tabela do DynamoDB tiver conflitos de tipo com o modelo de mapeamento especificado. Certifique-se de ter uma fila de mensagens não entregues (DLQ) habilitada (mesmo em desenvolvimento). Isso facilita a compreensão do que pode estar errado com o registro que causa um conflito quando ele está sendo indexado no índice no OpenSearch.
Tópicos
Como funciona
Tenha uma visão geral rápida das ações realizadas ao lidar com alterações significativas no índice. Veja os procedimentos passo a passo nas seções a seguir.
-
Parar e iniciar o pipeline: essa opção redefine o estado do pipeline, e o pipeline será reiniciado com uma nova exportação completa. Ela não é destrutiva e, portanto, não exclui o índice nem qualquer dado no DynamoDB. Se você não criar um índice antes de fazer isso, poderá ver um grande número de erros de conflitos de versão porque a exportação tentará inserir documentos mais antigos do que a
_version
atual no índice. É possível ignorar esses erros com segurança. Você não será cobrado pelo pipeline enquanto ele estiver parado. -
Atualizar o pipeline: essa opção atualiza a configuração no pipeline com uma abordagem azul/verde, sem perder nenhum estado. Se você fizer alterações significativas no pipeline (como adicionar novas rotas, índices ou chaves aos índices existentes), talvez seja necessário fazer uma redefinição completa do pipeline e recriar o índice. Essa opção não realiza uma exportação completa.
-
Excluir e recriar o índice: essa opção remove os dados e as configurações de mapeamento do índice. Você deve fazer isso antes de fazer qualquer alteração significativa nos mapeamentos. Isso interromperá qualquer aplicação que dependa do índice até que este seja recriado e sincronizado. A exclusão do índice não inicia uma nova exportação. Você deve excluir o índice somente depois de atualizar o pipeline. Caso contrário, o índice poderá ser recriado antes de você atualizar suas configurações.
Excluir o índice e redefinir o pipeline (opção centrada no pipeline)
Esse método geralmente é a opção mais rápida se você ainda estiver no desenvolvimento. Você excluirá o índice no OpenSearch Service e, depois, interromperá e iniciará o pipeline para iniciar uma nova exportação de todos os dados. Isso garante que não haja conflitos de modelos de mapeamento com índices existentes e nenhuma perda de dados de uma tabela processada incompleta.
-
Pare o pipeline por meio do AWS Management Console, ou usando a operação de API StopPipeline com a AWS CLI ou um SDK.
-
Atualize a configuração do pipeline com suas novas alterações.
-
Exclua o índice no OpenSearch Service, seja por meio de uma chamada de API
REST
ou do painel do OpenSearch. -
Pare o pipeline por meio do console ou usando a operação de API
StartPipeline
com a AWS CLI ou um SDK.nota
Isso inicia uma nova exportação completa, o que acarretará custos adicionais.
-
Monitore quaisquer problemas inesperados porque uma nova exportação é gerada para criar o índice.
-
Confirme se o índice corresponde às suas expectativas no OpenSearch Service.
Depois que a exportação for concluída e ela retomar a leitura do fluxo, os dados da tabela do DynamoDB agora estarão disponíveis no índice.
Recriar o índice e redefinir o pipeline (opção centrada no pipeline)
Esse método funcionará bem se você precisar fazer várias iterações no design do índice no OpenSearch Service antes de retomar o pipeline do DynamoDB. Isso pode ser útil para o desenvolvimento quando você deseja iterar rapidamente seus padrões de pesquisa e não esperar que novas exportações sejam concluídas entre cada iteração.
-
Pare o pipeline por meio do AWS Management Console ou chamando a operação de API StopPipeline com a AWS CLI ou um SDK.
-
Exclua e recrie o índice no OpenSearch com o modelo de mapeamento que você deseja usar. Você pode inserir manualmente alguns dados de amostra para confirmar que suas pesquisas estão funcionando conforme o esperado. Se os dados de amostra entrarem em conflito com qualquer dado do DynamoDB, não se esqueça de excluí-los antes de passar para a próxima etapa.
-
Se você tiver um modelo de indexação no pipeline, remova-o ou substitua-o por aquele que você já criou no OpenSearch Service. Garanta que o nome do índice corresponda ao nome no pipeline.
-
Inicie o pipeline por meio do console ou chamando a operação de API
StartPipeline
com a AWS CLI ou um SDK.nota
Isso iniciará uma nova exportação completa, o que acarretará custos adicionais.
-
Monitore quaisquer problemas inesperados porque uma nova exportação é gerada para criar o índice.
Depois que a exportação for concluída e ela retomar a leitura do fluxo, os dados da tabela do DynamoDB agora estarão disponíveis no índice.
Criar um índice e um coletor (opção on-line)
Esse método funcionará bem se você precisar atualizar o modelo de mapeamento, mas estiver usando seu índice na produção. Isso cria um índice totalmente novo, para o qual você precisará mover a aplicação depois de sincronizado e validado.
nota
Isso criará outro consumidor no fluxo. Isso pode ser um problema caso você também tenha outros consumidores, como AWS Lambda ou tabelas globais. Talvez seja necessário pausar as atualizações do pipeline existente a fim de criar capacidade para carregar o novo índice.
-
Crie um pipeline com novas configurações e um nome de índice diferente.
-
Monitore o novo índice em busca de problemas inesperados.
-
Troque a aplicação pelo novo índice.
-
Pare e exclua o pipeline antigo depois de validar se tudo está funcionando corretamente.
Práticas recomendadas para evitar e depurar conflitos de tipos
-
Sempre use uma fila de mensagens não entregues (DLQ) para facilitar a depuração quando há conflitos de tipos.
-
Sempre use um modelo de índice com mapeamentos e defina
include_keys
. Embora o OpenSearch Service associe dinamicamente novas chaves, isso pode causar problemas com comportamentos inesperados (como esperar que algo seja umGeoPoint
, mas é criado comostring
ouobject
) ou erros (como ter umnumber
que seja uma mistura de valoreslong
efloat
). -
Se precisar manter o índice existente funcionando na produção, também poderá substituir qualquer uma das etapas anteriores de exclusão do índice simplesmente renomeando o índice no arquivo de configuração do pipeline. Isso cria um índice totalmente novo. Depois, a aplicação precisará ser atualizada para apontar para o novo índice depois de concluído.
-
Se você tiver um problema de conversão de tipo que você corrija com um processador, poderá testar isso com
UpdatePipeline
. Para isso, você precisará interromper e iniciar ou processar as filas de mensagens não entreguespara corrigir quaisquer documentos com erros ignorados anteriormente.