2013-01-08 4 views
9

Der Aufwand beim Hinzufügen von Indizes ist gut dokumentiert, aber ich konnte keine guten Informationen darüber finden, wann mehrere Indizes in Bezug auf die verschiedenen indizierten Dokumenttypen verwendet werden sollten.Soll ich in ElasticSearch mehrere Indizes für separate, aber verwandte Entitäten verwenden?

ist hier ein allgemeines Beispiel, die Frage zu veranschaulichen:

Sagen wir folgende Einheiten

  • Produkte (Name, ProductID, ProductCategoryID, List-of-Shops)
  • haben
  • Produktkategorien (Name, ProductCategoryID)
  • Geschäfte (Name, StoreID)

Sollte ich diese drei verschiedenen Arten von Dokumenten in einen einzigen Index, jeweils mit dem entsprechenden elasticsearch type dump?

Ich habe Schwierigkeiten festzustellen, wo die Linie auf einem vs. mehrere Indizes zeichnen.

Was ist, wenn wir eine nicht verwandte Entität hinzufügen, "Webseiten". Definitiv ein separater Index?

+2

Gute Frage. Werfen Sie einen Blick auf das [Data Design Patterns] (http://vimeo.com/44716955) Vortrag des elasticsearch Autors von Berlin Buzzwords. Am Ende kommt es wirklich darauf an, was Sie mit Ihren Daten machen werden: Wie viele Daten haben Sie? Möchten Sie immer nach all Ihren Daten suchen? Wie würdest du suchen? – javanna

+0

Danke für den Link. Ich werde das sehen! In meinem speziellen Beispiel habe ich ungefähr 100.000 Dokumente von drei oder vier Typen. Jetzt haben Sie einen guten Punkt, vielleicht muss eine Teilmenge der Dokumente in 80% der Zeit gesucht werden, während 20% der Zeit alle Dokumente gesucht werden müssen. Ich habe festgestellt, dass elasticsearch bei Bedarf mehrere Indizes durchsuchen kann. (Quelle: http://www.elasticsearch.org/guide/reference/api/search/indices-types.html) –

Antwort

6

Ich habe kürzlich ein ElasticSearch-Backend von Grund auf neu modelliert und aus meiner Sicht ist es die beste Option, alle zugehörigen Dokumenttypen in den gleichen Index zu stellen.

Ich habe gelesen, some people had problems with too many concurrent indexes (1 Index pro Typ). Es ist besser für Leistung und Robustheit, verwandte Typen im selben Index zu vereinheitlichen.

Außerdem, wenn die Typen in dem gleichen Index sind, können Sie „_parent“ Feld erstellen hierarquical Modelle verwenden, die Ihnen interessante Features für die Suche als „has_child“ und „has_parent“ und natürlich erlauben haben Sie keine Daten zu duplizieren in deinem Modell.

7

Ein sehr interessantes Video erklärt Elasticsearch "Data Design Patterns" von Shay Banon:

http://vimeo.com/44716955

Diese exakte Frage wird um 13:40 Uhr beantwortet, wo verschiedene Datenströme untersuchen, indem man die Konzepte der Suche filtern von Typ, und Routing

Grüße

Verwandte Themen