2016-04-05 22 views
1

Hinweis: Es wird sehr zu schätzen wissen, wenn Sie mir sagen, warum Sie denken, dass dies eine Scheiß Frage durch einen Kommentar ist. Bitte nicht nur abstimmen und nicht sagen warum.Wie benutzt man den Elasticsearch Typ?

Wir wissen, dass es das Konzept namens Typ unter Index gibt. Aber ich weiß nicht, warum wir es brauchen.

Zuerst dachte ich, wir benutzen es, um Daten zu organisieren. Wie wir Index wie unten haben:

curl -XPOST 'localhost:9200/customer/USA/_bulk?pretty' -d ' 
{"index":{"_id":"1"}} 
{"name": "John Doe" } 
{"index":{"_id":"2"}} 
{"name": "Jane Doe" } 
' 

Aber in der obigen Situation, können wir immer die Art beseitigen, um es in die json Körper bewegen wie:

curl -XPOST 'localhost:9200/customer/_bulk?pretty' -d ' 
{"index":{"_id":"1"}} 
{"name": "John Doe","country":"USA" } 
{"index":{"_id":"2"}} 
{"name": "Jane Doe","country":"USA" } 
' 

Auf diese Weise können wir immer ein hinzufügen Feld, um den Typ zu ersetzen.

Dann dachte ich, es könnte leistungsbezogen sein. Ich dachte, wenn Sie die Daten in einen anderen Typ teilen, dann gibt es weniger Daten unter jedem Typ. Daher sollte die Leistung zur Abfrage jedes Typs besser sein. Aber es ist auch nicht so.

Die Leistung des Elasticsearch-Index bezieht sich auf den Shard. Selbst wenn Sie die Daten in verschiedene Typen aufteilen, werden sie immer noch unter den gleichen Gruppen von Shards gespeichert.

Warum brauchen wir dann?

Antwort

1

Zunächst einmal, obwohl elastische Suche Arten von Feldern zur Laufzeit bestimmen, aber sobald es einen bestimmten Typ zu einem Feld zugewiesen hat, würde immer denselben Typ von Wert für dieses Feld erwarten. Sie benötigen also mehrere Typen, wenn Sie verschiedene Arten von Daten speichern müssen. Zweitens ermöglicht es das Speichern mehrerer Typen mit Differenzzuordnungen in einem einzelnen Index. Außerdem erleichtert es das Abfragen eines bestimmten Typs, wenn Sie sich über sein Schema sicher sind.

1

Von meinem Verständnis von ES, Typ ist etwas, was wir auf Tabellenkonzept in einer relationalen Datenbank beziehen können. In dem eine Datenbank als eine Gruppe verwandter Tabellen angegeben werden kann. In ähnlicher Weise ist der Index in ES eine Gruppe verwandter Typen. Jeder Typ im Index enthält Dokumente, die einige gemeinsame Eigenschaften oder Felder gemeinsam haben.

In Ihrem Beispiel für einen Index sagen Kunden wir verschiedene Mitarbeiter aus verschiedenen Ländern wie den USA, Indien, Großbritannien etc. Kundendaten aus den einzelnen Ländern unter verschiedenen Typen gruppiert werden können haben kann, so dass es organisiert werden . Und wenn wir eine Suchanfrage für Kunden in einem bestimmten Land ausführen, müssen wir diese Abfrage nur für den Typ USA ausführen. Wir brauchen nicht im gesamten Index nachzuschlagen, um die Daten von Kunden aus den USA zu erhalten.

Ein weiteres Beispiel: Lassen Sie uns annehmen, dass Sie eine Blogging-Plattform laufen und speichern Sie alle Ihre Daten in einem einzigen Index. In diesem Index können Sie einen Typ für Benutzerdaten, einen anderen Typ für Blogdaten und einen weiteren Typ für Kommentardaten definieren. Daher organisieren wir die Daten logisch in verschiedenen Typen und suchen bei jeder Suche nach dem erforderlichen Typ.

Also im Allgemeinen ist Typ eine logische Kategorie/Partition Ihres Index, deren Semantik Ihnen völlig freisteht. Es kann als Dokumente definiert werden, die eine Reihe von gemeinsamen Feldern haben.

Sie können sich zum besseren Verständnis auf diesen Beitrag beziehen https://www.elastic.co/blog/index-vs-type