Wie kann ich nur übereinstimmende Kinder abrufen?

8

Betrachten Sie ein sehr einfaches Modell, in dem wir Standorte haben und jeder Standort null oder mehr Ereignisse haben kann. Ein Standort hätte Eigenschaften wie Name, Beschreibung und Geopunktdaten (lon / lat). Ein Ereignis sollte an einen Ort (sein Elternteil) angehängt werden und sollte einen Namen und eine Beschreibung haben.

%Vor%

Was ich tun möchte, ist, nach den untergeordneten Dokumenten (Ereignissen) zu suchen, die eine Volltextsuche nach ihren Namen und Beschreibungen durchführen. Ich möchte die übereinstimmenden Ereignisse zurückbekommen und bin in der Lage, auch den Namen des übergeordneten Standorts zu erhalten. Ich möchte auch das Ergebnis der Standortkoordinaten eingrenzen. Ich möchte keine Ereignisse erhalten, die nicht mit der Abfrage übereinstimmen. Ist das in der elastischen Suche möglich? Welche Arten von Abfragen sollte ich verwenden?

Ich habe versucht, Ereignisse als eine Array-Eigenschaft unter Standort (siehe oben) und mit der nested -Abfrage zu setzen, aber es liefert nicht die Art von Ergebnissen, die ich möchte (ich denke, es gibt den gesamten Ort, einschließlich aller Ereignisse, zurück diejenigen, die nicht mit meiner Anfrage übereinstimmen). Ich habe versucht, Ereignisse in einen separaten Index (Abbildung?) Zu setzen, die Eigenschaft _parent zur Verfügung stellend und dann die top_children Abfrage auf Positionen durchführend, aber ich erhalte keine Resultate.

%Vor%

Könnte jemand etwas Licht schöpfen? Ich weiß nicht, wo ich anfangen soll ...

    
Pawel Krakowiak 15.09.2011, 13:46
quelle

1 Antwort

8

Hier ist die funktionierende Lösung für mein Problem, vielleicht wird es für jemanden nützlich sein.

Standortzuordnung:

%Vor%

Ausstellungskarten:

%Vor%

Abfrage:

%Vor%

Sie sollten mit dem Feld _parent abfragen und ein Array mit IDs von Standorten übergeben, auf die Sie die Exponate beschränken möchten.

    
Pawel Krakowiak 04.11.2011, 16:02
quelle

Tags und Links