NOTA: Per eseguire le modifiche a un indice, assicurati di avere i privilegi di gestione sull'indice di destinazione.
Uso di base
Per modificare un tipo di campo, inviare una richiesta put all'API _mapping seguito dall'organismo di richiesta. Il corpo di richiesta include il parametro delle proprietà e la mappatura del campo target. Quando si crea un nuovo campo, assicurarsi di includere i parametri del nome, del tipo e della mappatura del campo.
Ad esempio, la seguente richiesta modifica il tipo di campo dal numero intero a lungo.
Put /my-index /_mappingAl completamento con successo, dovresti vedere un output come:
Metodo di reindicizzazione
Nella maggior parte dei casi, Elasticsearch ti impedirà di aggiornare il tipo di campo di un indice esistente. In questo modo potrebbe portare a non essere validi i dati attuali e causare errori nell'indice.
Se vuoi ancora aggiornare il tipo di campo esistente, puoi farlo in alcuni semplici passaggi.
L'uso di questo metodo consente di ridurre i tempi di inattività minimi per l'indice.
Creazione di un vecchio indice
Iniziamo creando un indice con il tipo di campo errato.
Put /Change-meNell'esempio sopra, abbiamo un semplice indice con i due campi: ID e nome utente. I tipi di campo sono rispettivamente interi e testo.
Supponiamo che il campo contenga i dati come mostrato nella seguente query:
Post /Change-me /_doc
Le due query sopra creeranno un documento con i dati forniti nell'organismo di richiesta.
Assicurarsi che i dati esistano:
Get /cambia-me /_search?belloDovremmo vedere i due record come mostrato:
Crea un nuovo indice
Diciamo che vogliamo cambiare il campo ID da un numero intero a una parola chiave. Inizieremo creando un nuovo indice con il tipo come parole chiave.
Put /Change-Me-ReindexNella richiesta sopra, creiamo un nuovo indice e impostiamo il tipo di ID su una parola chiave.
Rifornire i vecchi dati
Il prossimo passo è riporre i dati dal vecchio indice a quello nuovo utilizzando l'API _ reindex. La richiesta per ciò è sotto:
Post /_ReindexLa richiesta di cui sopra copierà i documenti dal vecchio indice a quello nuovo in cui il tipo di campo cambia da un numero intero a una parola chiave.
Output dalla query sopra:
Elimina il vecchio indice
Ora che abbiamo un indice aggiornato con la mappatura corretta, è tempo di rimuovere il vecchio indice. Possiamo farlo inviando una richiesta di eliminazione all'indice come:
Elimina /cambio-meDopo aver trasmesso una riuscita rimozione, dovresti vedere un output come:
Crea alias indice
Se avessi applicazioni utilizzando il vecchio indice, potrebbero smettere di funzionare poiché non esiste più.
Possiamo risolverlo creando un alias per il nuovo indice con il nome del vecchio indice.
Put/Change-Me-Reindex/_alias/Change-meLa richiesta di cui sopra dovrebbe creare un alias per il nuovo indice.
Conclusione
In questa guida, hai scoperto come cambiare il tipo di campo esistente in un indice di Elasticsearch.