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 modificarlo. 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, potrebbe comunque essere possibile riscontrare problemi se la tabella DynamoDB presenta conflitti di tipo con il modello di mappatura specificato. Assicurati che sia abilitata una coda 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 nell'indice su. OpenSearch
Argomenti
Eliminazione dell’indice e reimpostazione della pipeline (opzione incentrata sulla pipeline)
Ricreazione dell’indice e reimpostazione della pipeline (opzione incentrata sull’indice)
Creazione di un nuovo indice e di un nuovo sink (opzione online)
Best practice per evitare i conflitti di tipo ed eseguirne il debug
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.
-
Arresto e avvio della pipeline: questa opzione ripristina lo stato della pipeline e la pipeline verrà riavviata con una nuova esportazione completa. Non è distruttiva, quindi non elimina l’indice o i dati in DynamoDB. Se non si crea un nuovo indice prima di procedere con questa opzione, si potrebbe riscontrare un numero elevato di errori dovuti ai conflitti di versione perché l’esportazione tenta di inserire nell’indice documenti più vecchi rispetto alla
_versioncorrente. È possibile ignorare questi errori senza correre rischi. Non verrà addebitato il costo della pipeline durante il suo arresto. -
Aggiornamento della pipeline: questa opzione aggiorna la configurazione nella pipeline con un approccio blu/verde, senza perdere alcuno stato. Se si apportano modifiche significative alla pipeline (ad esempio aggiungendo nuovi percorsi, indici o chiavi agli indici esistenti), potrebbe essere necessario reimpostare completamente la pipeline e ricreare l’indice. Questa opzione non esegue un’esportazione completa.
-
Eliminazione e ricreazione dell’indice: questa opzione rimuove i dati e le impostazioni di mappatura dall’indice. È necessario eseguire questa operazione prima di apportare modifiche sostanziali alle mappature. Questa procedura 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. Sarebbe opportuno eliminare l’indice solo dopo aver aggiornato la pipeline. Altrimenti, l’indice potrebbe venire ricreato prima di aggiornare le impostazioni.
Eliminazione dell’indice e reimpostazione della pipeline (opzione incentrata sulla pipeline)
Questo metodo è spesso l’opzione più veloce se si è ancora in fase di sviluppo. Eliminerai il tuo 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.
-
Interrompi la pipeline tramite o utilizzando l' Console di gestione AWS operazione StopPipelineAPI con AWS CLI o un SDK.
-
Aggiorna la configurazione della pipeline con le nuove modifiche.
-
Elimina il tuo indice in OpenSearch Service, tramite una chiamata
RESTAPI o tramite la OpenSearch dashboard. -
Avvia la pipeline tramite la console o utilizzando l'operazione
StartPipelineAPI con AWS CLI o un SDK.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 ripresa la lettura dal flusso, i dati della tabella DynamoDB saranno ora disponibili nell’indice.
Ricreazione dell’indice e reimpostazione della 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. 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' Console di gestione AWS operazione StopPipelineAPI con o un SDK. AWS CLI
-
Elimina e ricrea l'indice OpenSearch con il modello di mappatura che desideri utilizzare. È possibile inserire manualmente alcuni dati di esempio per verificare che le ricerche funzionino 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 dell’indice corrisponda al nome nella pipeline.
-
Avvia la pipeline tramite console o chiamando l'operazione
StartPipelineAPI con o un SDK. AWS CLINota
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 ripresa la lettura dal flusso, i dati della tabella DynamoDB saranno ora disponibili nell’indice.
Creazione di un nuovo indice e di 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 completamente nuovo, sul quale sarà necessario spostare l’applicazione dopo la sincronizzazione e la convalida.
Nota
Questa opzione creerà un altro consumer nel flusso. Questo può essere un problema se hai anche tabelle globali simili AWS Lambda a quelle di altri consumatori. 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.
-
Esegui la transizione dell’applicazione verso il nuovo indice.
-
Arresta ed elimina la vecchia pipeline dopo aver verificato che tutto funzioni correttamente.
Best practice per evitare i conflitti di tipo ed eseguirne il debug
-
Utilizza sempre una coda DLQ per semplificare il debug in caso di conflitti di tipo.
-
Usa sempre un modello di indice con mappature e imposta
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 comestringoobject) o errori (come avere unnumberche è una combinazione di valorilongefloat). -
Se c’è bisogno di mantenere l’indice esistente funzionante in produzione, è possibile anche sostituire una delle precedenti fasi di eliminazione dell’indice semplicemente rinominando l’indice nel file di configurazione della pipeline. In questo modo viene creato un indice completamente nuovo. L’applicazione dovrà quindi essere aggiornata in modo che punti al nuovo indice una volta completata.
-
In caso di problemi di conversione dei tipi correggibili con un processore, è possibile testare questa opzione con
UpdatePipeline. A tale scopo, sarà necessario interrompere e riavviare o elaborare le code DLQper correggere eventuali documenti precedentemente ignorati che contenevano errori.