MERK: For å utføre endringer i en indeks, må du forsikre deg om at du har administrasjonsprivilegiene på målindeksen.
Grunnleggende bruk
For å endre en felttype, send en put -forespørsel til _mapping API etterfulgt av forespørselsorganet. Forespørselsorganet inkluderer egenskapsparameteren og kartleggingen av målfeltet. Når du oppretter et nytt felt, må du forsikre deg om at du inkluderer feltnavn, type og kartleggingsparametere.
For eksempel endrer følgende forespørsel felttypen fra heltall til lang.
PUT /MY-INDEX /_MAPPINGEtter vellykket fullføring, bør du se en utdata som:
Re-indekseringsmetode
I de fleste tilfeller vil Elasticsearch forhindre deg i å oppdatere felttypen til en eksisterende indeks. Å gjøre det kan føre til at dagens data blir ugyldige og forårsaker feil i indeksen.
Hvis du fremdeles vil oppdatere typen av et eksisterende felt, kan du gjøre det i noen få enkle trinn.
Ved å bruke denne metoden lar deg redusere den minimale driftsstansen for indeksen din.
Opprette en gammel indeks
La oss starte med å lage en indeks med feil felttype.
Put /Change-MeI eksemplet over har vi en enkel indeks med de to feltene: ID og brukernavn. Felttypene er henholdsvis heltall og tekst.
La oss anta at feltet inneholder data som vist i følgende spørsmål:
Post /Change-Me /_Doc
De to spørsmålene ovenfor vil lage et dokument med dataene som angitt i forespørselsorganet.
Forsikre deg om at dataene eksisterer:
Få /endre-meg /_search?ganskeVi bør se de to postene som vist:
Opprett en ny indeks
La oss si at vi ønsker å endre ID -feltet fra et heltall til et nøkkelord. Vi starter med å opprette en ny indeks med typen som nøkkelord.
Put /Change-Me-ReindexI forespørselen over oppretter vi en ny indeks og setter ID -typen til et nøkkelord.
Index de gamle dataene på nytt
Neste trinn er å gjenopprette dataene fra den gamle indeksen til den nye ved hjelp av _ Re-Index API. Forespørselen om det er nedenfor:
POST /_REINDEXOvennevnte forespørsel vil kopiere dokumentene fra den gamle indeksen til den nye der felttypen endres fra et heltall til et nøkkelord.
Utgang fra spørringen ovenfor:
Slett den gamle indeksen
Nå som vi har en oppdatert indeks med riktig kartlegging, er det på tide å fjerne den gamle indeksen. Vi kan gjøre dette ved å sende en slettforespørsel til indeksen som:
Slett /endring-megVed vellykket fjerning, bør du se en utdata som:
Lag indeksalias
Hvis du hadde applikasjoner ved hjelp av den gamle indeksen, kan de slutte å fungere siden den ikke lenger eksisterer.
Vi kan løse dette ved å lage et alias for den nye indeksen med navnet på den gamle indeksen.
Put/Change-Me-Reindex/_alias/Change-MeOvennevnte forespørsel skal opprette et alias for den nye indeksen.
Konklusjon
I denne guiden oppdaget du hvordan du endrer typen som eksisterende felt i en Elasticsearch Index.