Elasticsearch Rename Index

Elasticsearch Rename Index

En elasticsearch -indeks eller indekser er (er) en datastruktur som inneholder kartlegginger for forskjellige dokumenter. I en relasjonsdatabase kan en indeks referere til en bestemt database.

En Elasticsearch -klynge inneholder flere indekser, inkludert flere typer, som deretter holder dokumentene.

Følgende kan representere elasticsearch -forholdet til en relasjonsdatabase.

  • PostgreSQL -> Database -> Tabell -> Rad/kolonne
  • Elasticsearch -> Index -> Type -> Dokument

I denne guiden vil vi diskutere forskjellige metoder for å gi nytt navn til en eksisterende Elasticsearch Index.

Metode 1: Reindeksering

Den første metoden vi kan bruke når vi gir nytt navn til en indeks er reindekserings -API. Denne API lar deg kopiere dokumenter fra en kildeindeks til en spesifisert destinasjonsindeks.

Reindex API kopierer imidlertid ikke konfigurasjonen av kildeindeksen til destinasjonen. Derfor må vi sette opp destinasjonsindeksen og bruke konfigurasjonen av kildeindeksen før vi ringer Reindex.

Vi kan implementere en full re-indeksoperasjon ved å følge trinnene som beskrevet nedenfor:

  1. Opprett en ny (kilde) Elasticsearch Index
  2. Hente konfigurasjonen av indeksen og lagre den.
  3. Opprett en ny (destinasjon) indeks med konfigurasjonen av kildeindeksen.
  4. Ring Reindex API fra kilde til destinasjon
  5. Slett kildeindeksen.

Hvis du har en eksisterende elasticsearch -indeks, kan du gjerne hoppe til trinn 2

MERK: I denne guiden vil vi gi alle Elasticsearch -forespørsler om Curl.

Trinn 1: Opprett en ny indeks
La oss lage en indeks som vil fungere som kilden. For enkelhets skyld vil vi bruke en enkel indekskonfigurasjon med de fleste av standardparametrene.

Vi vil tilby en forespørsel til Elasticsearch HTTP -endepunktet.

En eksempelforespørsel om å opprette en indeks “Test-Index” er nedenfor:

Curl -xput "http: // localhost: 9200/test -index" -h 'Content -Type: Application/Json' -D '

"Innstillinger":
"Indeks":
"Number_of_shards": 3,
"number_of_replicas": 2

,
"Mappings":
"egenskaper":
"felt1": "type": "tekst"


'

Neste trinn er å legge til data i den opprettede indeksen. Som standard inneholder indeksen ingen dokumenter.

Curl -xget http: // localhost: 9200/_cat/indekser/test -indeks \?v

For å legge til data i indeksen, kjør forespørselen som:

Forespørselen ovenfor skal opprette et dokument i testindeksindeksen.

Vi kan bekrefte at dokumentet eksisterer ved hjelp av get -forespørselen til indeksens endepunkt.

Curl -xget "http: // locahost: 9200/test -indeks/_search" -h 'innholdstype: applikasjon/json' -d '

"spørring": "match_all":
'
'

Et eksempelutgang er ANS vist:

Trinn 2: Hent kildekonfigurasjon
Neste trinn før du utfører en reindex -operasjon er å kopiere konfigurasjonen av kildeindeksen.

Vi starter med å få indeksinnstillingen. For å gjøre dette, sender vi en http få forespørsel til _seting API.

Innstillinger = $ (Curl -xGet "https: // localhost: 9200/test -indeks/_settinger")

Vi lagrer utdataene til en variabel som vi kan bekrefte ved hjelp av kommandoen:

Echo $ Innstillinger | JQ

Siden utgangen er i JSON -format, gir vi den til en JSON -prosessor som JQ. Et eksempelutgang er som vist:

Neste trinn er å få kartlegging av indeksen. I dette tilfellet vil vi sende en GET -forespørsel til _mapping endepunktet som:

Kartlegging = $ (Curl -Xget "https: // localhost: 9200/test -indeks/_mapping")

Kontroller at utgangen lagres i variabelen:

ekko $ kartlegging | JQ

Utgangen er som vist:

Neste, kombiner utgangen fra både $ innstilling og $ kartlegging til et enkelt JSON -format.

Følgende er et avkortet skjermbilde av begge kombinerte utganger (konfigurasjon.JSON).

Trinn 3: Opprett en ny indeks
Det er nå på tide å opprette en ny indeks med lagringskonfigurasjonen. Forsikre deg om at konfigurasjonen din ikke inneholder noen feil.

Kjør kommandoen som:

Curl -xput "http: // localhost: 9200/Reimed -index" -H 'Content -Type: Application/Json' -D Config.json '

Følgende er innholdet i konfigurasjonen, JSON -filen som brukes i denne opplæringen.

Ved vellykket skapelse, bør du se erkjent: Sann som vist:

Trinn 4: Reindex
Nå som vi har en omdøpt indeks som ligner på kildeindeksen, kan vi kopiere data fra kilden til destinasjon ved hjelp av Reindex API.

Curl -xpost "http: // localhost: 9200/_reindex" -h 'Content -Type: Application/Json' -D '

"Kilde":
"Indeks": "Test-indeks"
,
"dest":
"Indeks": "Røpt til indeks"

'

Når du har kommet med Reindex -forespørselen, vil Elasticsearch kopiere dataene fra den spesifiserte kildeindeksen til destinasjonsindeksen.

Her er et eksempelutgang:

Trinn 5: Slett kildeindeks
Det er ikke fornuftig å ha to indekser med lignende konfigurasjon og data. Derfor kan vi slippe kildeindeksen:

Curl -xdelete http: // localhost: 9200/test -indeks

"anerkjent": sant

Metode 2: Clone API

Den andre og enkleste måten å gi nytt navn og indeks på er å bruke Clone API introdusert i Elasticsearch versjon 7.4 og over.

For å bruke Clone API, må du sørge for at kildeindeksen er skrivebeskyttet og klyngehelsen er grønn.

Hvordan kloning fungerer
Kloning fungerer som følger:

  • Opprett en ny Elasticsearch Index. Den nye indeksen skal inneholde identiske definisjoner som den gamle indeksen (kildeindeks).
  • Neste trinn er å utføre et hardkoblingssegment av kildeindeksen til den nye Elasticsearch Index.
  • Når hardkoblingen er utført, åpnes den nye indeksen med definisjonene og dataene fra den gamle indeksen.

Trinn 1: Angi kildeindeks til skrivebeskyttet
For å stille inn kildeindeksen til skrivebeskyttet modus, bruker vi _settings-API og passerer informasjonen som vist i forespørselen nedenfor:

Curl -xput "http: // localhost: 9200/test -index/_settings" -h 'innholdstype: applikasjon/json' -d '

"Innstillinger":
"Indeks.blokker.Skriv ": sant

'

Trinn 2: klonekildeindeks til målet
For å klone testindeksen til en ny indeks kalt omdøpt-klonet-indeks, kan vi kjøre forespørselen som vist:

Curl -xpost “http: // localhost: 9200/test-indeks/_clone/omdøpt klonet-indeks

Forutsatt at følgende krav er sanne, bør du ha en omdøpt indeks over kildeindeksen.

  1. Den spesifiserte målindeksen må ikke eksistere.
  2. Noden har tilstrekkelig plass til å lagre den klonede indeksen
  3. Kildeindeksen har et like stort antall primære skjær som den spesifiserte målindeksen.

Konklusjon

I denne guiden dekket vi hvordan du kan gi nytt navn til en Elasticsearch -indeks ved hjelp av to metoder.

Takk for at du leser!