Mik a térképezési típusok?
Az Elasticsearch alkalmazásban minden dokumentum egy indexhez és egy típushoz tartozik. Az indexet adatbázisnak tekinthetjük, míg a Típust táblázatnak tekinthetjük, összehasonlítva a relációs adatbázissal. A leképezési típus egy objektum logikai partíciója volt más objektumokkal, amelyek ugyanabban az indexben más leképezési típusokhoz tartoztak.
Minden hozzárendelési típusnak megvan a saját mezője. Például egy típusú felhasználó a következő mezők lehetnek:
"id": 123,
"name": "Shubham",
"weboldal": 1
Egy másik leképezési típus ugyanabban az indexben weboldal a következő mezők lehetnek, amelyek teljesen eltérnek a felhasználó típus:
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Míg egy dokumentumot keres az indexben, a keresés egyetlen dokumentumra korlátozódhatott, ha egyetlen mezőt adott meg:
GET idx_name / user, website / _search"lekérdezés":
"mérkőzés":
"id": 1
A _típus a dokumentumok mezője egyesült azzal _id generálni a _uid mező, tehát ugyanazokkal a dokumentumok _id létezhet egyetlen indexben.
Olvassa el az Elasticsearch bemutatót kezdőknek az Elasticsearch architektúra mélyebb megismerése érdekében, és kezdje el az ElasticSearch telepítésével az Ubuntu programon.
Miért távolítják el a leképezési típusokat??
Csakúgy, mint amit fentebb mondtunk, miközben elmagyaráztuk, hogy az Index és a Típusok milyenek egy adatbázishoz és egy relációs adatbázis táblázatához, az Elasticsearch csapata is ugyanezt gondolta, de ez nem így történt, mivel a Lucene Engine nem követi ugyanazt az analógiát. Ennek az oka a következő:
- A relációs adatbázisban a táblák függetlenek egymástól és az oszlopok nevétől, még akkor is, ha azonosak, nincs kapcsolatuk közöttük. Ez nem így van a mezők leképezési típusokban, mint az ES-ben, az azonos nevű mezőket belsőleg ugyanazzal a Lucene Engine mezővel kezeljük.
- A fenti példában a mező _id ban ben felhasználó típus és weboldal típus ugyanabban a mezőben van tárolva, és pontosan ugyanannak a típusnak kell lennie, ami csalódáshoz és zavartsághoz vezethet.
- A mezők nélküli mezők tárolása leállítja a Lucene-t a dokumentumok hatékony tömörítésével.
A térképezési típusok alternatívái
Bár a döntés megszületett, mégis külön kell választanunk a különféle adattípusokat. Most az első alternatíva az külön dokumentumokat a saját indexükben amelynek két előnye van:
- Most, hogy az adatok minden indexben általánosak, a Lucene nagyon egyszerűen alkalmazhatja saját adattömörítési technikáit.
- Most, hogy az index összes dokumentuma azonos mezőkkel rendelkezik, a teljes szöveges keresési képességek látványosan nőnek, ahogy az egyes dokumentumok pontszáma nőtt.
Az adatok szétválasztásának másik alternatívája a szokás fenntartása _típus mező minden beillesztett dokumentumban, például:
Tegye be a db_name / doc / 123 parancsot"type": "user",
"id": 123,
"name": "Shubham",
"weboldal": 1
Tegye be a db_nevet / doc / weboldalt
"type": "website",
"id": 1,
"title": "LinuxHint",
"link": "https: // linuxhint.com / "
Ez kiváló felhasználás, ha komplett egyedi megoldást keres.
Ütemezés a leképezési típusok eltávolítására
Mivel a térképészeti típusok eltávolítása nagy változás, az ES csapat lassan végzi a folyamatot. Itt van egy ütemezés a gumiból kivont kimenetre.társ:
- Elasticsearch 7.x
- A típus paraméter az URL-ekben nem kötelező. Például a dokumentum indexeléséhez már nincs szükség dokumentumtípusra.
- A _default_ leképezési típus eltávolítva.
- Elasticsearch 8.x
- A típus paraméter már nem támogatott az URL-ekben.
- A include_type_name paraméter alapértelmezés szerint hamis.
- Elasticsearch 9.x
- A include_type_name paraméter eltávolítva.
Következtetés
Ebben a leckében megvizsgáltuk, miért távolították el az Elasticsearch Mapping típusokat, és a következő verziókban teljesen nem támogatottak lesznek.