Ho una struttura padre/figlio in 3 livelli. Diciamo:
ElasticSearch aggregazione padre-figlio multi livello
Company -> dipendenti -> Disponibilità
Dal disponibilità (e anche dei dipendenti) è aggiornato frequentemente qui, ho scelto usando la struttura genitore/bambino contro annidati. E la funzione di ricerca funziona bene (tutti i documenti in frammenti corretti).
Ora voglio ordinare quei risultati. Ordinarli per meta data dalla compagnia (1 ° livello) è facile. Ma ho bisogno di ordinare anche per il 3 ° livello (disponibilità).
Voglio elenco di aziende che sono allineati secondo:
- Distanza dalla posizione indicata ASC
- Valutazione DECR
- Soonest disponibilità ASC
Ad esempio:
società A è a 5 miglia di distanza, ha 4 e il più presto uno dei loro dipendenti è disponibile in 20 ore s La compagnia B si trova a 5 miglia di distanza, ha anche una valutazione 4 ma il più presto uno dei suoi dipendenti è disponibile in 5 ore.
Pertanto sort Risultato necessità di essere B, A.
Vorrei aggiungere un peso particolare a ciascuno di questi dati, così ho iniziato a scrivere aggregazioni che ho potuto poi utilizzare nel mio script custom_score.
Full gist for creating index, importing data and searching
Ora, sono riuscito a scrivere una query che restituisce in realtà di nuovo risultato, ma la disponibilità di aggregazione secchio è vuoto. Tuttavia, sto anche ottenendo risultati troppo strutturati, vorrei appiattirli.
Attualmente torno:
società IDS -> Employee IDS -> primo disponibilità
mi piacerebbe avere l'aggregazione come:
società IDS -> prima disponibilità
In questo modo sono in grado di eseguire lo script custom_score
per calcolare il punteggio e ordinarli correttamente.
Ulteriori domande semplificate:
Come è possibile ordinare/aggregare per più livelli (grandi) bambini e eventualmente appiattire il risultato.
Potrebbe aggiungere il mappatura e alcuni documenti di esempio (con i discendenti) per la sintesi? È difficile vedere come inventare documenti falsi che consentano test adeguati del tuo sistema. –
Hey Sloan - Ho aggiunto mappatura e risultati campione. L'ho spogliato per una comprensione più semplice. Lo stack completo ha molti più dati in esso :) Grazie! –
Ho avuto la stessa domanda [qui] (http://elasticsearch-users.115913.n3.nabble.com/Help-Flattened-aggregations-with-limiting-and-sorting-td4065217.html). Anche se probabilmente meno performante, richiedo solo tutti i risultati che hanno un tipo predefinito di DocCount. Poi ho fatto il mio appiattimento ricorsivo, lo smistamento e la limitazione, che non era l'ideale. –