Modellierung von Eltern-Kind-Beziehungen (Produkt / Produktvariante) in Elasticsearch

Ich breche den Kopf, wenn es darum geht, Produktvarianten mit ES (oder Solr) zu modellieren.

Betrachten Sie (erfundenes Beispiel):

verschiedene Produkte (zB T-Shirts)Jedes Produkt hat eine Reihe von Eigenschaften (Produkt-ID, Name, Herkunft, Marke, Farbe, Beliebtheit)Jedes Produkt hat eine Reihe von Produktvarianten mit Eigenschaften (productvariantid (Kombination aus productid ++ Größe), productid, Größe, Verfügbarkeit, Preis)

Dies scheint eine Standard-Eltern-Kind-Beziehung zwischen Produkt und Produktvariante zu sein. Also würde ich es gerne so in ES modellieren.

Ich möchte in der Lage sein, Folgendes zu tun:

A. Fragen Sie nach Produktvarianten (und geben Sie alle Eigenschaften zurück). Es müssen keine Produkteigenschaften zurückgegeben werden, Produktvarianteigenschaften sind ausreichend.

B. Jede Benutzerabfrage ist so eingeschränkt, dass höchstens 1 Produktvariante pro Produkt zutrifft (im obigen Beispiel bedeutet dies, dass wir die Größe der Produktvariante einschränken).

C. Filter nach Preis.

D. Filter auf einige Eigenschaften des Produkts

E. Bestellung zum Preis

F. Bestellung auf Eigentum des Produktes wie Popularität oder eine Kombination der 2.

G. Facette auf Produktvariante.Preis

H. Facette auf mehrere Eigenschaften des Produkts (die Eltern)

Tun dies mit Eltern / Kind-Dokumenten undhas_parent in ES:A-E + G Sind möglich.

Aber wie wäre esF undH? Ich habe in Sachen geschaut als_scope für facetten (ich schätze zwar die möglichkeiten nicht zu 100% ein) und alle anderen sachen, die mir einfallen, aber ich sehe keine naheliegende lösung, facetten für produkt-eigenschaften anzuzeigen und in verbindung damit sortieren zu könnenhas_parent .

Ich habe andere Dinge ausprobiert (auf Papier) - has_child -> kein Glück, zurückgegebene Varianteninformationen - eingebettete Dokumente (Variante im Produkt) und gesamtes Produkt mit allen Varianten zurückgeben. Es fühlt sich einfach klobig an. Außerdem bin ich mir ziemlich sicher, dass ich auf diese Weise keine Facette / Bestellung für den Preis machen kann.

Hilfe sehr geschätzt

Antworten auf die Frage(1)

Ihre Antwort auf die Frage