Warum wurden ES -Mapping -Typen in ES v6 entfernt?.0?

Warum wurden ES -Mapping -Typen in ES v6 entfernt?.0?

Was sind Mapping -Typen?

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 Partition eines Objekts mit anderen Objekten, die zu anderen Zuordnungstypen im selben Index gehörten.

Jeder Mapping -Typ hat seine eigenen Felder. Zum Beispiel eine Art von Art von Benutzer kann folgende Felder haben:


"id": 123,
"Name": "Shubham",
"Website": 1

Ein weiterer Mapping -Typ im selben Index Webseite kann folgende Felder haben, die sich völlig von den unterscheiden Benutzer Typ:


"id": 1,
"Titel": "LinuxHint",
"Link": "https: // linuxhint.com/"

Bei der Suche nach einem Dokument in einem Index könnte die Suche auf ein einzelnes Dokument beschränkt werden, indem ein einzelnes Feld als:

GET IDX_NAME/User, Website/_SEARCH

"Anfrage":
"passen":
"id": 1


Der _Typ Das Feld der Dokumente wurde mit seinem kombiniert _Ausweis a _UID Feld also Dokumente mit demselben _Ausweis könnte in einem einzigen Index existieren.

Lesen Sie das Elasticsearch -Tutorial für Anfänger für ein tieferes Verständnis der Elasticsearch -Architektur und beginnen.

Warum werden Mapping -Typen entfernt??

Genau wie das, was wir oben gesagt haben, als wir erklären, wie Index und Typen einer Datenbank und einer Tabelle in einer relationalen Datenbank ähnlich waren, dachte das Elasticsearch -Team dasselbe, aber dies war nicht der Fall, da Lucene Engine nicht der gleichen Analogie folgt. Dies liegt an den folgenden Gründen:

  • In einer relationalen Datenbank sind Tabellen unabhängig voneinander und der Name der Spalten, auch wenn sie gleich sind, haben keine Beziehung zwischen ihnen. Dies ist bei Feldern in Mapping -Typen wie in ES nicht der Fall, Felder mit demselben Namen werden intern als das gleiche Lucene -Motorfeld behandelt.
  • Im obigen Beispiel das Feld _Ausweis In Benutzer Typ und Webseite Der Typ wird im selben Feld gespeichert und sollte genau den gleichen Typ haben, was zu Frustration und Verwirrung führen kann.
  • Lagern von Unternehmen ohne Felder in gemeinsamen Stopps von Lucene, um Dokumente effektiv zu komprimieren.

Alternativen zu Mapping -Typen

Obwohl die Entscheidung getroffen wurde, müssen wir immer noch verschiedene Arten von Daten trennen. Jetzt ist die erste Alternative zu Separate Dokumente in ihrem eigenen Index Das hat zwei Vorteile:

  • Jetzt, da Daten in jedem Index üblich sind, kann Lucene seine eigenen Datenkomprimierungstechniken sehr leicht anwenden.
  • Nachdem alle Dokumente in einem Index die gleichen Felder aufweisen, erhöhen sich Volltext-Suchfähigkeiten phänomenal, da die Bewertung jedes Dokuments zugenommen hat.

Eine weitere Alternative zur Trennung der Daten ist die Aufrechterhaltung eines Brauchs _Typ Feld in jedem Dokument, das wir einfügen, wie:

Legen Sie DB_NAME/DOC/123 ein

"Typ": "Benutzer",
"id": 123,
"Name": "Shubham",
"Website": 1

Setzen Sie DB_NAME/DOC/Website ein

"Typ": "Website",
"id": 1,
"Titel": "LinuxHint",
"Link": "https: // linuxhint.com/"

Dies ist eine hervorragende Verwendung, wenn Sie nach einer vollständigen kundenspezifischen Lösung suchen.

Planen zum Entfernen von Kartierungstypen

Da das Entfernen von Mapping -Typen eine große Veränderung ist, führt das ES -Team den Prozess langsam durch. Hier ist ein Zeitplan für die aus elastische Ausrüstung extrahierte Einführung.Co:

  • Elasticsarch 7.X
    • Der Typ Parameter in URLs sind optional. Zum Beispiel erfordert die Indexierung eines Dokuments keinen Dokumenttyp mehr.
    • Der _Standard_ Mapping -Typ wird entfernt.
  • Elasticsearch 8.X
    • Der Typ Der Parameter wird in URLs nicht mehr unterstützt.
    • Der include_type_name Parameter standardmäßig zu FALSCH.
  • Elasticsearch 9.X
    • Der include_type_name Parameter wird entfernt.

Abschluss

In dieser Lektion haben wir uns angesehen, warum Elasticsearch -Mapping -Typen entfernt wurden und in den kommenden Versionen völlig nicht unterstützt werden.