Hvad er kortlægningstyper?
I Elasticsearch tilhører hvert dokument et indeks og en type. Et indeks kan betragtes som en database, mens en type kan ses som en tabel sammenlignet med en relationsdatabase. En kortlægningstype var en logisk partition af et objekt med andre objekter, der tilhørte andre kortlægningstyper i det samme indeks.
Hver kortlægningstype har sine egne felter. For eksempel en type bruger kan have følgende felter:
"id": 123,
"name": "Shubham",
"websted": 1
En anden kortlægningstype i det samme indeks internet side kan have følgende felter, som er helt forskellige fra bruger type:
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Under søgning efter et dokument i et indeks kunne søgningen have været begrænset til et enkelt dokument ved at angive et enkelt felt som:
FÅ idx_name / bruger, website / _search"forespørgsel":
"match":
"id": 1
Det _type felt af dokumenterne blev kombineret med dets _id at generere en _uid felt så dokumenter med samme _id kunne eksistere i et enkelt indeks.
Læs Elasticsearch Tutorial for begyndere for en dybere forståelse af Elasticsearch Architecture og kom i gang med det med Install ElasticSearch på Ubuntu.
Hvorfor fjernes kortlægningstyper?
Ligesom hvad vi sagde ovenfor, mens vi forklarede, hvordan indeks og typer lignede en database og en tabel i en relationsdatabase, troede Elasticsearch-team det samme, men dette var ikke tilfældet, da Lucene Engine ikke følger den samme analogi. Dette skyldes følgende årsager:
- I en relationsdatabase er tabeller uafhængige af hinanden og kolonnernes navn, selvom de er ens, har de ingen relation mellem dem. Dette er ikke tilfældet med felter i kortlægningstyper som i ES, felter med samme navn behandles internt med samme Lucene Engine-felt.
- I eksemplet ovenfor, feltet _id i bruger type og internet side typen er gemt i det samme felt og skal have nøjagtig den samme type, som kan føre til frustration og forvirring.
- Lagring af enheder uden fælles felter forhindrer Lucene i at komprimere dokumenter effektivt.
Alternativer til kortlægningstyper
Selvom beslutningen er taget, er vi stadig nødt til at adskille forskellige typer data. Nu er det første alternativ til separate dokumenter i deres eget indeks som har to fordele:
- Nu hvor data er almindelige i hvert indeks, kan Lucene meget let anvende sine egne datakomprimeringsteknikker.
- Nu hvor alle dokumenter i et indeks har samme felter, stiger søgefunktionerne i fuldtekst fænomenalt, efterhånden som scoringen af hvert dokument er steget.
Et andet alternativ til at adskille data er at opretholde en brugerdefineret _type felt i hvert dokument, vi indsætter, som:
PUT db_name / doc / 123"type": "bruger",
"id": 123,
"name": "Shubham",
"websted": 1
PUT db_name / doc / website
"type": "website",
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Dette er en fremragende brug, hvis du leder efter en komplet brugerdefineret løsning.
Tidsplan for fjernelse af kortlægningstyper
Da fjernelse af kortlægningstyper er en stor ændring, gør ES-teamet processen langsomt. Her er en tidsplan for udrulningen ekstraheret fra elastik.co:
- Elastiksøgning 7.x
- Det type parameter i webadresser er valgfri. For eksempel kræver indeksering af et dokument ikke længere en dokumenttype.
- Det _Standard_ kortlægningstypen er fjernet.
- Elastiksøgning 8.x
- Det type parameter understøttes ikke længere i webadresser.
- Det inkluderer_type_navn parameter er som standard falsk.
- Elastiksøgning 9.x
- Det inkluderer_type_navn parameter er fjernet.
Konklusion
I denne lektion kiggede vi på, hvorfor Elasticsearch Mapping-typer blev fjernet og vil ikke være helt understøttet i kommende versioner.