Kaj so vrste preslikave?
V programu Elasticsearch vsak dokument pripada indeksu in vrsti. Indeks lahko štejemo za bazo podatkov, medtem ko je tip mogoče videti kot tabelo v primerjavi z relacijsko bazo podatkov. Vrsta preslikave je bila logična particija predmeta z drugimi predmeti, ki so pripadali drugim vrstam preslikav v istem indeksu.
Vsaka vrsta preslikave ima svoja polja. Na primer vrsta uporabnik lahko vsebuje naslednja polja:
"id": 123,
"name": "Shubham",
"spletno mesto": 1
Druga vrsta preslikave v istem indeksu Spletna stran lahko vsebuje naslednja polja, ki se popolnoma razlikujejo od uporabnik vrsta:
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Med iskanjem dokumenta v indeksu bi lahko bilo iskanje omejeno na en dokument z določitvijo enega polja kot:
GET idx_name / uporabnik, spletno mesto / _search"poizvedba":
"match":
"id": 1
The _tip polje dokumentov je bilo kombinirano s svojim _id ustvariti a _uid polje tako dokumenti z istim _id bi lahko obstajal v enem indeksu.
Za globlje razumevanje arhitekture Elasticsearch preberite Vadnico za začetnike Elasticsearch in z njo začnite z namestitvijo ElasticSearch v Ubuntu.
Zakaj se odstranjujejo vrste preslikav?
Tako kot tisto, kar smo povedali zgoraj, ko smo razlagali, kako so indeksi in tipi podobni zbirki podatkov in tabeli v relacijski bazi podatkov, je skupina Elasticsearch mislila enako, vendar temu ni bilo tako, saj Lucene Engine ne sledi enaki analogiji. To je zaradi naslednjih razlogov:
- V relacijski bazi podatkov so tabele neodvisne druga od druge in imena stolpcev, tudi če so enake, med seboj niso povezane. To ne velja za polja v vrstah preslikav kot v ES, polja z istim imenom se interno obravnavajo kot ista polja Lucene Engine.
- V zgornjem primeru polje _id v uporabnik vrsta in Spletna stran je shranjena v istem polju in bi morala imeti popolnoma enako vrsto, kar lahko povzroči frustracije in zmedo.
- Shranjevanje entitet brez skupnih polj Lucene ustavi za učinkovito stiskanje dokumentov.
Alternative za preslikavo vrst
Čeprav je bila odločitev sprejeta, moramo še vedno ločiti različne vrste podatkov. Zdaj je prva alternativa ločene dokumente v svojem indeksu ki ima dve prednosti:
- Zdaj, ko so podatki pogosti v vseh indeksih, lahko Lucene zelo enostavno uporabi svoje tehnike stiskanja podatkov.
- Zdaj, ko imajo vsi dokumenti v indeksu enaka polja, se sposobnosti iskanja po celotnem besedilu fenomenalno povečajo, ko se poveča točkovanje vsakega dokumenta.
Druga možnost ločevanja podatkov je vzdrževanje po meri _tip polje v vsakem dokumentu, ki ga vstavimo, na primer:
PUT db_name / doc / 123"type": "uporabnik",
"id": 123,
"name": "Shubham",
"spletno mesto": 1
PUT db_name / doc / spletno mesto
"type": "spletno mesto",
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
To je odlična uporaba, če iščete popolno rešitev po meri.
Časovni načrt za odstranitev vrst preslikav
Ker je odstranjevanje vrst preslikav velika sprememba, ekipa ES postopek izvaja počasi. Tukaj je urnik razvaljanja, pridobljenega iz elastike.co:
- Elastično iskanje 7.x
- The tip Parameter v URL-jih ni obvezen. Na primer za indeksiranje dokumenta ni več potrebna vrsta dokumenta.
- The _privzeto_ vrsta preslikave je odstranjena.
- Elastično iskanje 8.x
- The tip parameter ni več podprt v URL-jih.
- The vključi_tip_ime privzeto za parameter napačno.
- Elasticsearch 9.x
- The vključi_tip_ime parameter je odstranjen.
Zaključek
V tej lekciji smo preučili, zakaj so bili odstranjeni tipi Elasticsearch Mapping in v prihodnjih različicah ne bodo popolnoma podprti.