elasticsearch gruppiert nach mehreren Feldern

Ich suche nach dem besten Weg, um Daten in elasticsearch zu gruppieren. Elasticsearch unterstützt so etwas wie "Gruppieren nach" in SQL nicht.

Nehmen wir an, ich habe 1k Kategorien und Millionen von Produkten. Was ist Ihrer Meinung nach der beste Weg, um einen vollständigen Kategoriebaum zu rendern? Natürlich benötigen Sie einige Metadaten (Symbol, Link-Ziel, SEO-Titel, ...) und eine benutzerdefinierte Sortierung für die Kategorien.

Verwenden von Aggregationen: Beispiel:https://found.no/play/gist/8124563 Sieht nützlich aus, wenn Sie nach einem Feld gruppieren müssen und zusätzliche Felder benötigen.

Verwenden mehrerer Felder in einer Facette (funktioniert nicht) Beispiel:https://found.no/play/gist/1aa44e2114975384a7c2 Hier verlieren wir die Beziehung zwischen den verschiedenen Bereichen.

Erstellen lustiger Facettenhttps://found.no/play/gist/8124810

Zum Beispiel ist das Bauen eines Kategoriebaums mit diesen 3 "Lösungen" zum Kotzen. Lösung 1 funktioniert möglicherweise (ES 1 ist momentan nicht stabil). Lösung 2 funktioniert nicht. Lösung 3 ist schmerzhaft, weil es sich hässlich anfühlt. Sie müssen eine Menge Daten vorbereiten und die Facetten sprengen.

Möglicherweise besteht eine Alternative darin, keine Kategoriedaten in ES zu speichern, nur die IDhttps://found.no/play/gist/a53e46c91e2bf077f2e1

als Sie die zugeordnete Kategorie von einem anderen System wie Redis, Memcache oder der Datenbank erhalten könnten.

Dies würde zu sauberem Code führen, aber die Leistung könnte zu einem Problem werden. Beispielsweise kann das Laden von 1 KB Kategorien aus memcache / Redis / a langsam sein. Ein weiteres Problem ist, dass das Synchronisieren von zwei Datenbanken schwieriger ist als das Synchronisieren von einer.

Wie gehen Sie mit solchen Problemen um?

Es tut mir leid für die Links, aber ich kann nicht mehr als 2 in einem Artikel posten.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage