Čo sú typy mapovania?
V Elasticsearch patrí každý dokument k indexu a typu. Index možno považovať za databázu, zatiaľ čo typ je možné považovať za tabuľku v porovnaní s relačnou databázou. Typ mapovania bol logický oddiel objektu s inými objektmi, ktoré patrili k iným typom mapovania v rovnakom indexe.
Každý typ mapovania má svoje vlastné polia. Napríklad typ používateľ môže mať nasledujúce polia:
„id“: 123,
"name": "Shubham",
„webová stránka“: 1
Iný typ mapovania v rovnakom indexe webovú stránku môže mať nasledujúce polia, ktoré sú úplne odlišné od používateľ typ:
„id“: 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Pri hľadaní dokumentu v indexe mohlo byť hľadanie obmedzené na jeden dokument zadaním jedného poľa ako:
ZÍSKAŤ idx_name / užívateľ, web / _search"dopyt":
"zápas":
„id“: 1
The _typ pole dokumentov bolo spojené s jeho _id vygenerovať a _uid pole tak dokumenty s rovnakými _id by mohli existovať v jednom indexe.
Prečítajte si príručku Elasticsearch pre začiatočníkov, ktorá vám pomôže hlbšie porozumieť architektúre Elasticsearch a začnite s ňou inštaláciou ElasticSearch na Ubuntu.
Prečo sa odstraňujú typy mapovania?
Rovnako ako to, čo sme povedali vyššie pri vysvetľovaní toho, ako sú Index a typy podobné databáze a tabuľke v relačnej databáze, si tím Elasticsearch myslel to isté, ale nebolo to tak, pretože Lucene Engine nedodržiava rovnakú analógiu. Je to z nasledujúcich dôvodov:
- V relačnej databáze sú tabuľky navzájom nezávislé a názvy stĺpcov, aj keď sú rovnaké, nemajú medzi sebou žiadny vzťah. Toto nie je prípad polí v typoch mapovania ako v ES, polia s rovnakým názvom sa interne považujú za rovnaké polia Lucene Engine.
- V príklade vyššie pole _id v používateľ typu a webovú stránku typ je uložený v rovnakom poli a mal by mať úplne rovnaký typ, čo môže viesť k frustrácii a zmätku.
- Uloženie entít, ktoré nemajú spoločné polia, zastaví Lucene, aby dokumenty efektívne komprimoval.
Alternatívy k typom mapovania
Aj keď už bolo rozhodnuté, stále musíme oddeliť rôzne typy údajov. Prvá alternatíva je teraz samostatné dokumenty vo vlastnom indexe čo má dve výhody:
- Teraz, keď sú údaje v každom indexe bežné, môže Lucene veľmi ľahko použiť svoje vlastné techniky kompresie údajov.
- Teraz, keď majú všetky dokumenty v indexe rovnaké polia, sa schopnosti fulltextového vyhľadávania fenomenálne zvyšujú, pretože sa zvyšuje skóre každého dokumentu.
Ďalšou alternatívou k oddeleniu údajov je zachovanie zvyku _typ pole v každom dokumente, ktorý vložíme, napríklad:
PUT db_name / doc / 123"type": "užívateľ",
„id“: 123,
"name": "Shubham",
„webová stránka“: 1
PUT db_name / doc / web
"type": "webová stránka",
„id“: 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Toto je vynikajúce využitie, ak hľadáte kompletné riešenie na mieru.
Časový plán na odstránenie typov mapovania
Pretože odstránenie typov mapovania je veľká zmena, tím ES robí tento proces pomaly. Tu je plán zavedenia extrahovaného z elastického materiálu.co:
- Elasticsearch 7.X
- The typu parameter v adresách URL sú voliteľné. Napríklad indexovanie dokumentu už nevyžaduje typ dokumentu.
- The _predvolene_ typ mapovania je odstránený.
- Elasticsearch 8.X
- The typu parameter už nie je podporovaný v adresách URL.
- The include_type_name predvolené parametre sú nepravdivé.
- Elasticsearch 9.X
- The include_type_name parameter je odstránený.
Záver
V tejto lekcii sme sa pozreli na to, prečo boli odstránené typy mapovania Elasticsearch a v budúcich verziách bude úplne nepodporované.