Ich habe eine Eltern/Kind-Struktur in 3 Ebenen. Lassen Sie uns sagen:
ElasticSearch Multi-Level-Eltern-Kind-Aggregation
Unternehmen -> Mitarbeiter -> Verfügbarkeit
Seit Verfügbarkeit (und auch Mitarbeiter) hier häufig aktualisiert wird, wähle ich mit Eltern/Kind-Struktur gegen verschachtelt. Und Suchfunktion funktioniert gut (alle Dokumente in richtigen Shards).
Jetzt möchte ich diese Ergebnisse sortieren. Die Sortierung nach Metadaten aus der Firma (1. Ebene) ist einfach. Aber ich muss auch nach 3rd Level sortieren (Verfügbarkeit).
Ich möchte eine Liste von Unternehmen, die sind wie folgt sortiert:
- Entfernung vom Standort gegeben ASC
- Rating, absteigend
- Soonest Verfügbarkeit ASC
Zum Beispiel:
Unternehmen A ist 5 Meilen entfernt, hat eine Bewertung von 4 und am schnellsten ist einer seiner Mitarbeiter in 20 Stunden verfügbar s Firma B ist auch 5 Meilen entfernt, hat auch Bewertung 4, aber bald ist einer ihrer Mitarbeiter in 5 Stunden zur Verfügung.
Daher ergeben Art Bedürfnisse B, A.
Ich möchte anfügen besonderes Gewicht auf jede dieser Daten sein, und so begann ich Aggregationen zu schreiben, die ich später in meinem custom_score Skript verwenden könnte.
Full gist for creating index, importing data and searching
Jetzt habe ich es geschafft, eine Abfrage zu schreiben, die tatsächlich Ergebnis zurückgibt zurück, aber die Verfügbarkeit Aggregation Eimer leer ist. Allerdings bekomme ich auch Ergebnisse zu strukturiert, ich würde sie gerne flacher machen.
Zur Zeit komme ich zurück:
Firma IDS -> Mitarbeiter IDS -> erste Verfügbarkeit
Ich möchte Aggregation wie haben:
Firma IDS -> erste Verfügbarkeit
So kann ich mein custom_score
Skript zur Berechnung der Punkte und sortieren sie richtig.
Mehr vereinfachte Frage:
Wie kann eine Sorte/Aggregat durch Multi-Level (Enkel-) Kinder und möglicherweise das Ergebnis glätten.
Könnten Sie fügen Sie Ihre Mapping und ein paar Beispieldokumente (mit Nachkommen) zum Kern? Es ist schwer zu sehen, wie man gefälschte Dokumente erfindet, die ein adäquates Testen Ihres Systems erlauben. –
Hey Sloan - Ich habe Mapping und Sample-Ergebnisse hinzugefügt. Ich habe es zum besseren Verständnis entfernt. Full Stack hat viel mehr Daten drin :) Danke! –
Ich hatte die gleiche Frage [hier] (http://elasticsearch-users.115913.n3.nabble.com/Help-Flattened-aggregations-with-limiting-and-sorting-td4065217.html). Obwohl wahrscheinlich weniger performant, fordere ich nur alle Ergebnisse an, die eine Standardart von DocCount haben. Ich machte dann meine eigene rekursive Abflachung, Sortierung und Begrenzung, was nicht ideal war. –