Was sind Zuordnungstypen??
In Elasticsearch gehört jedes Dokument zu einem Index und einem Typ. Ein Index kann als Datenbank betrachtet werden, während ein Typ im Vergleich zu einer relationalen Datenbank als Tabelle angesehen werden kann. Ein Mapping-Typ war eine logische Aufteilung eines Objekts mit anderen Objekten, die zu anderen Mapping-Typen im selben Index gehörten.
Jeder Mapping-Typ hat seine eigenen Felder. Zum Beispiel eine Art von Benutzer kann folgende Felder haben:
"id" : 123,
"name" : "Shubham",
"Website" : 1
Ein anderer Mapping-Typ im gleichen Index Webseite kann folgende Felder haben, die sich völlig von den Benutzer Art:
"id" : 1,
"title" : "LinuxHint",
"link" : "https://linuxhint.com/"
Bei der Suche nach einem Dokument in einem Index hätte die Suche auf ein einzelnes Dokument beschränkt werden können, indem ein einzelnes Feld wie folgt angegeben wurde:
GET idx_name/user,website/_search"abfrage":
"Spiel":
"id": 1
Das _Art Bereich der Dokumente wurde mit seinem _Ich würde a . erzeugen _uid Feld also Dokumente mit gleichem _Ich würde könnte in einem einzigen Index existieren.
Lesen Sie das Elasticsearch-Tutorial für Anfänger, um ein tieferes Verständnis der Elasticsearch-Architektur zu erhalten, und beginnen Sie mit der Installation von ElasticSearch auf Ubuntu.
Warum werden Zuordnungstypen entfernt??
Genau wie wir oben gesagt haben, als wir erklärt haben, dass Index und Typen einer Datenbank und einer Tabelle in einer relationalen Datenbank ähnlich sind, dachte das Elasticsearch-Team dasselbe, aber dies war nicht der Fall, da Lucene Engine nicht der gleichen Analogie folgt analog. Dies hat folgende Gründe:
- In einer relationalen Datenbank sind Tabellen unabhängig voneinander und die Namen der Spalten, auch wenn sie gleich sind, haben sie keine Beziehung zueinander. Dies ist bei Feldern in Mapping-Typen wie in ES nicht der Fall, Felder mit demselben Namen werden intern als dasselbe Lucene Engine-Feld behandelt.
- Im obigen Beispiel ist das Feld _Ich würde im Benutzer Typ und Webseite Typ wird im gleichen Feld gespeichert und sollte genau den gleichen Typ haben, was zu Frustration und Verwirrung führen kann.
- Das Speichern von Entitäten ohne gemeinsame Felder stoppt Lucene, Dokumente effektiv zu komprimieren.
Alternativen zu Mapping-Typen
Obwohl die Entscheidung gefallen ist, müssen wir noch verschiedene Arten von Daten trennen. Nun ist die erste Alternative zu separate Dokumente in einem eigenen Index was zwei Vorteile hat:
- Da Daten nun in jedem Index vorkommen, kann Lucene ganz einfach seine eigenen Datenkomprimierungstechniken anwenden.
- Da nun alle Dokumente in einem Index über dieselben Felder verfügen, werden die Volltextsuchfähigkeiten phänomenal verbessert, da die Bewertung jedes Dokuments gestiegen ist.
Eine weitere Alternative zum Trennen der Daten ist die Pflege einer benutzerdefinierten _Art Feld in jedem Dokument, das wir einfügen, wie:
PUT db_name/doc/123"Typ": "Benutzer",
"id": 123,
"name": "Shubham",
"Website": 1
PUT db_name/doc/website
"typ": "Website",
"id": 1,
"title": "LinuxHint",
"link": "https://linuxhint.com/"
Dies ist eine ausgezeichnete Verwendung, wenn Sie nach einer kundenspezifischen Komplettlösung suchen.
Zeitplan für das Entfernen von Mapping-Typen
Da das Entfernen von Zuordnungstypen eine große Veränderung darstellt, führt das ES-Team den Prozess langsam durch. Hier ist ein Zeitplan für den Roll-out, der aus elastischen extrahiert wurde.zusammen:
- Elasticsearch 7.x
- Das Art Parameter in URLs sind optional. Zum Beispiel erfordert die Indexierung eines Dokuments keinen Dokumenttyp mehr.
- Das _Standard_ Zuordnungstyp wurde entfernt.
- Elasticsearch 8.x
- Das Art Parameter wird in URLs nicht mehr unterstützt.
- Das include_type_name Parameter standardmäßig auf falsch.
- Elasticsearch 9.x
- Das include_type_name Parameter wird entfernt.
Fazit
In dieser Lektion haben wir uns angeschaut, warum Elasticsearch Mapping-Typen entfernt wurden und in kommenden Versionen nicht mehr unterstützt werden.