Co jsou typy mapování?
V Elasticsearch patří každý dokument do indexu a typu. Index lze považovat za databázi, zatímco typ lze ve srovnání s relační databází považovat za tabulku. Typ mapování byl logický oddíl objektu s dalšími objekty, které patřily k jiným typům mapování ve stejném indexu.
Každý typ mapování má svá vlastní pole. Například typ uživatel může mít následující pole:
"id": 123,
"name": "Shubham",
"web": 1
Jiný typ mapování ve stejném indexu webová stránka může mít následující pole, která jsou zcela odlišná od uživatel typ:
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Při hledání dokumentu v rejstříku mohlo být hledání omezeno na jeden dokument zadáním jednoho pole jako:
ZÍSKEJTE idx_name / uživatel, web / _search"query":
"zápas":
"id": 1
The _typ pole dokumentů bylo kombinováno s jeho _id vygenerovat a _uid pole, takže dokumenty se stejným _id může existovat v jednom indexu.
Přečtěte si výukový program Elasticsearch pro začátečníky, abyste získali hlubší porozumění architektuře Elasticsearch, a začněte s ním pomocí instalace ElasticSearch na Ubuntu.
Proč jsou typy mapování odstraňovány?
Stejně jako to, co jsme řekli výše při vysvětlování toho, jak jsou Index a typy podobné databázi a tabulce v relační databázi, si tým Elasticsearch myslel totéž, ale nebylo tomu tak, protože Lucene Engine nedodržuje stejnou analogii. Je to z následujících důvodů:
- V relační databázi jsou tabulky nezávislé na sobě a názvy sloupců, i když jsou stejné, nemají mezi sebou žádný vztah. To není případ polí v typech mapování jako v ES, pole se stejným názvem jsou interně považována za stejná pole Lucene Engine.
- Ve výše uvedeném příkladu pole _id v uživatel typ a webová stránka typ je uložen ve stejném poli a měl by mít přesně stejný typ, což může vést k frustraci a zmatku.
- Ukládání entit bez společných polí zastaví Lucene, aby dokumenty účinně komprimoval.
Alternativy k typům mapování
Přestože bylo rozhodnuto, stále musíme oddělit různé typy dat. První alternativou je nyní samostatné dokumenty ve vlastním rejstříku který má dvě výhody:
- Nyní, když jsou data v každém indexu běžná, může Lucene velmi snadno použít své vlastní techniky komprese dat.
- Nyní, když všechny dokumenty v rejstříku mají stejná pole, se schopnosti fulltextového vyhledávání fenomenálně zvyšují, jak se zvyšuje bodové hodnocení každého dokumentu.
Další alternativou k oddělení dat je udržování zvyku _typ pole v každém dokumentu, který vložíme, jako:
PUT název_databáze / doc / 123"type": "user",
"id": 123,
"name": "Shubham",
"web": 1
PUT název_databáze / doc / web
"type": "web",
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Toto je vynikající využití, pokud hledáte kompletní řešení na míru.
Časový plán pro odstranění typů mapování
Protože odstranění typů mapování je velká změna, tým ES postupuje pomalu. Tady je plán pro vytažení extrahované z elastického.co:
- Elasticsearch 7.X
- The typ parametr v URL je nepovinný. Například indexování dokumentu již nevyžaduje typ dokumentu.
- The _ výchozí_ typ mapování je odstraněn.
- Elasticsearch 8.X
- The typ parametr již není v adresách URL podporován.
- The zahrnout_typ_názvu výchozí nastavení parametru na Nepravdivé.
- Elasticsearch 9.X
- The zahrnout_typ_názvu parametr je odstraněn.
Závěr
V této lekci jsme se podívali na to, proč byly odstraněny typy mapování Elasticsearch a v nadcházejících verzích budou zcela nepodporovány.