Hvorfor ble ES -kartleggingstyper fjernet i ES V6.0?

Hvorfor ble ES -kartleggingstyper fjernet i ES V6.0?

Hva er kartleggingstyper?

I Elasticsearch tilhører hvert dokument en indeks og en type. En indeks kan betraktes som en database, mens en type kan sees på som en tabell sammenlignet med en relasjonsdatabase. En karttype var en logisk partisjon av et objekt med andre objekter som tilhørte andre kartleggingstyper i samme indeks.

Hver karttype har sine egne felt. For eksempel en type bruker kan ha følgende felt:


"ID": 123,
"Navn": "Shubham",
"Nettsted": 1

Nok en kartleggingstype i samme indeks nettsted kan ha følgende felt som er helt forskjellige fra bruker type:


"id": 1,
"Tittel": "Linuxhint",
"Link": "https: // linuxhint.com/"

Mens du søkte etter et dokument i en indeks, kunne søket ha vært begrenset til et enkelt dokument ved å spesifisere et enkelt felt som:

Få IDX_NAME/Bruker, nettsted/_Search

"spørring":
"kamp":
"id": 1


De _type Feltet til dokumentene ble kombinert med dets _id å generere en _uid felt så dokumenter med det samme _id kan eksistere i en enkelt indeks.

Les Elasticsearch Tutorial for nybegynnere for en dypere forståelse av Elasticsearch Architecture og kom i gang med den med install Elasticsearch på Ubuntu.

Hvorfor fjernes kartleggingstyper?

Akkurat som det vi sa ovenfor mens vi forklarte hvordan indeks og typer var lik en database og en tabell i en relasjonsdatabase, mente Elasticsearch -teamet det samme, men dette var ikke tilfelle, da Lucene -motor ikke følger den samme analogien. Dette er på grunn av følgende grunner:

  • I en relasjonsdatabase er tabeller uavhengige av hverandre og navnet på kolonnene, selv om de er de samme har ingen sammenheng mellom dem. Dette er ikke tilfelle med felt i kartleggingstyper som i ES, Felt med samme navn blir behandlet som samme Lucene -motorfelt internt.
  • I eksemplet over, feltet _id i bruker type og nettsted Type lagres i samme felt og skal ha nøyaktig samme type som kan føre til frustrasjon og forvirring.
  • Lagring av enheter uten felt i felles stopper Lucene for å komprimere dokumenter effektivt.

Alternativer til kartleggingstyper

Selv om avgjørelsen er tatt, må vi fortsatt skille forskjellige typer data. Nå er det første alternativet å Separate dokumenter i sin egen indeks som har to fordeler:

  • Nå som data er vanlig i hver indeks, kan Lucene veldig enkelt bruke sine egne datakomprimeringsteknikker.
  • Nå som alle dokumenter i en indeks har samme felt, øker fulltekstsøkegenskaper fenomenalt ettersom scoringen av hvert dokument har økt.

Et annet alternativ til å skille dataene er å opprettholde en skikk _type Felt i hvert dokument vi setter inn, som:

Sett DB_NAME/DOC/123

"Type": "Bruker",
"ID": 123,
"Navn": "Shubham",
"Nettsted": 1

Sett DB_NAME/DOC/NETTSTED

"Type": "Nettsted",
"id": 1,
"Tittel": "Linuxhint",
"Link": "https: // linuxhint.com/"

Dette er en utmerket bruk hvis du leter etter en komplett tilpasset løsning.

Planlegging av fjerning av kartleggingstyper

Siden å fjerne kartleggingstyper er en stor endring, gjør ES -teamet prosessen sakte. Her er en tidsplan for utrulling av elastisk.co:

  • Elasticsearch 7.x
    • De type Parameter i URL -er er valgfri. For eksempel krever indeksering av et dokument ikke lenger en dokumenttype.
    • De _misligholde_ Kartleggingstype fjernes.
  • Elasticsearch 8.x
    • De type Parameter støttes ikke lenger i URL -er.
    • De inkluderer_type_navn Parameter er standard for falsk.
  • Elasticsearch 9.x
    • De inkluderer_type_navn Parameteren fjernes.

Konklusjon

I denne leksjonen så vi på hvorfor elasticsearch -kartleggingstyper fjernet og vil være helt ikke støttet i kommende versjoner.