Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Gestione delle modifiche sostanziali all'indice
OpenSearch può aggiungere dinamicamente nuovi attributi all'indice. Tuttavia, dopo aver impostato il modello di mappatura per una determinata chiave, sarà necessario intraprendere ulteriori azioni per modificarla. Inoltre, se la modifica richiede la rielaborazione di tutti i dati nella tabella DynamoDB, è necessario adottare misure per avviare una nuova esportazione.
Nota
In tutte queste opzioni, potresti comunque riscontrare problemi se la tua tabella DynamoDB presenta conflitti di tipo con il modello di mappatura che hai specificato. Assicurati di avere abilitato una coda di lettere morte (DLQ) (anche in fase di sviluppo). In questo modo è più facile capire cosa potrebbe esserci di sbagliato nel record che causa un conflitto quando viene indicizzato nel tuo indice su. OpenSearch
Argomenti
Come funziona
Ecco una rapida panoramica delle azioni intraprese durante la gestione delle modifiche sostanziali all'indice. Consulta le step-by-step procedure nelle sezioni seguenti.
-
Arresta e avvia la pipeline: questa opzione ripristina lo stato della pipeline e la pipeline verrà riavviata con una nuova esportazione completa. Non è distruttivo, quindi non elimina l'indice o i dati in DynamoDB. Se non crei un nuovo indice prima di farlo, potresti riscontrare un numero elevato di errori dovuti ai conflitti di versione perché l'esportazione tenta di inserire nell'indice documenti più vecchi di quelli correnti.
_version
Puoi tranquillamente ignorare questi errori. Non ti verrà addebitato alcun costo per la pipeline mentre è interrotta. -
Aggiorna la pipeline: questa opzione aggiorna la configurazione nella pipeline con un approccio blu/verde, senza perdere alcuno stato. Se apporti modifiche significative alla pipeline (ad esempio aggiungendo nuovi percorsi, indici o chiavi agli indici esistenti), potresti dover reimpostare completamente la pipeline e ricreare l'indice. Questa opzione non esegue un'esportazione completa.
-
Elimina e ricrea l'indice: questa opzione rimuove i dati e le impostazioni di mappatura dall'indice. È necessario eseguire questa operazione prima di apportare modifiche sostanziali alle mappature. Interromperà tutte le applicazioni che si basano sull'indice finché l'indice non verrà ricreato e sincronizzato. L'eliminazione dell'indice non avvia una nuova esportazione. Dovresti eliminare l'indice solo dopo aver aggiornato la pipeline. Altrimenti, l'indice potrebbe essere ricreato prima di aggiornare le impostazioni.
Elimina l'indice e reimposta la pipeline (opzione incentrata sulla pipeline)
Questo metodo è spesso l'opzione più veloce se sei ancora in fase di sviluppo. Eliminerai l'indice in OpenSearch Service, quindi interromperai e avvierai la pipeline per avviare una nuova esportazione di tutti i tuoi dati. Ciò garantisce che i modelli di mappatura non entrino in conflitto con gli indici esistenti e che non si verifichino perdite di dati da una tabella elaborata incompleta.
-
Arresta la pipeline tramite o utilizzando l' AWS Management ConsoleStopPipelineAPIoperazione con o un. AWS CLI SDK
-
Aggiorna la configurazione della pipeline con le nuove modifiche.
-
Elimina il tuo indice in OpenSearch Service, tramite una
REST
API chiamata o tramite la OpenSearch dashboard. -
Avvia la pipeline tramite la console o utilizzando l'
StartPipeline
APIoperazione con AWS CLI o unSDK.Nota
Ciò avvia una nuova esportazione completa, che comporterà costi aggiuntivi.
-
Monitora eventuali problemi imprevisti perché viene generata una nuova esportazione per creare il nuovo indice.
-
Verifica che l'indice corrisponda alle tue aspettative in OpenSearch Service.
Una volta completata l'esportazione e ripreso a leggere dallo stream, i dati della tabella DynamoDB saranno ora disponibili nell'indice.
Ricrea l'indice e reimposta la pipeline (opzione incentrata sull'indice)
Questo metodo funziona bene se è necessario eseguire molte iterazioni sulla progettazione dell'indice in OpenSearch Service prima di riprendere la pipeline da DynamoDB. Questo può essere utile per lo sviluppo quando si desidera iterare molto rapidamente sui modelli di ricerca ed evitare di attendere il completamento di nuove esportazioni tra ogni iterazione.
-
Arresta la pipeline tramite o chiamando l'StopPipelineAPIoperazione con o un. AWS Management Console AWS CLI SDK
-
Elimina e ricrea l'indice OpenSearch con il modello di mappatura che desideri utilizzare. Puoi inserire manualmente alcuni dati di esempio per confermare che le tue ricerche funzionano come previsto. Se i dati di esempio potrebbero entrare in conflitto con i dati di DynamoDB, assicurati di eliminarli prima di passare alla fase successiva.
-
Se hai un modello di indicizzazione nella tua pipeline, rimuovilo o sostituiscilo con quello che hai già creato in Service. OpenSearch Assicurati che il nome del tuo indice corrisponda al nome nella pipeline.
-
Avvia la pipeline tramite console o chiamando l'
StartPipeline
APIoperazione con AWS CLI o un. SDKNota
Ciò avvierà una nuova esportazione completa, che comporterà costi aggiuntivi.
-
Monitora eventuali problemi imprevisti perché viene generata una nuova esportazione per creare il nuovo indice.
Una volta completata l'esportazione e ripreso a leggere dallo stream, dovresti essere tu a dover fare in modo che i dati della tabella DynamoDB siano ora disponibili nell'indice.
Crea un nuovo indice e un nuovo sink (opzione online)
Questo metodo funziona bene se è necessario aggiornare il modello di mappatura ma attualmente si utilizza l'indice in produzione. Questo crea un indice nuovo di zecca, sul quale dovrai spostare l'applicazione dopo la sincronizzazione e la convalida.
Nota
Questo creerà un altro utente nello stream. Questo può essere un problema se hai anche altri consumatori come le AWS Lambda nostre tabelle globali. Potrebbe essere necessario sospendere gli aggiornamenti della pipeline esistente per creare la capacità necessaria per caricare il nuovo indice.
-
Crea una nuova pipeline con nuove impostazioni e un nome di indice diverso.
-
Monitora il nuovo indice per eventuali problemi imprevisti.
-
Scambia l'applicazione con il nuovo indice.
-
Arresta ed elimina la vecchia pipeline dopo aver verificato che tutto funzioni correttamente.
Le migliori pratiche per evitare ed eseguire il debug dei conflitti di tipo
-
Utilizzate sempre una coda di lettere morte (DLQ) per semplificare il debug in caso di conflitti di tipo.
-
Usa sempre un modello di indice con mappature e set.
include_keys
Sebbene OpenSearch Service mappi dinamicamente le nuove chiavi, ciò può causare problemi con comportamenti imprevisti (ad esempio aspettarsi che qualcosa sia unGeoPoint
, ma viene creato comestring
oobject
) o errori (come avere unnumber
che è una combinazione di valori e).long
float
-
Se hai bisogno di mantenere l'indice esistente funzionante in produzione, puoi anche sostituire uno dei passaggi precedenti di eliminazione dell'indice semplicemente rinominando l'indice nel file di configurazione della pipeline. Questo crea un indice completamente nuovo. L'applicazione dovrà quindi essere aggiornata in modo che punti al nuovo indice una volta completata.
-
Se hai un problema di conversione dei tipi che risolvi con un processore, puoi testarlo con
UpdatePipeline
. A tale scopo, dovrete interrompere e riavviare o elaborare le code di lettere mancantiper correggere eventuali documenti precedentemente ignorati che contenevano errori.