Mam strukturę rodzica / dziecka na 3 poziomach. Powiedzmy:
Firma -> Pracownik -> Dostępność
Ponieważ dostępność (a także pracownik) jest tutaj często aktualizowana, wybieram użycie struktury nadrzędnej / podrzędnej zamiast zagnieżdżonej. Funkcja wyszukiwania działa dobrze (wszystkie dokumenty we właściwych fragmentach).
Teraz chcę posortować te wyniki. Sortowanie ich według metadanych z firmy (poziom 1) jest łatwe. Ale muszę też sortować według poziomu trzeciego (dostępność).
Chcę listę firm posortowanych według:
- Odległość od lokalizacji podanej ASC
- Ocena DESC
- Najszybsza dostępność ASC
Na przykład:
Firma A jest oddalona o 5 mil, ma ocenę 4 i najwcześniej jeden z jej pracowników jest dostępny za 20 godzin. Firma B jest również oddalona o 5 mil, również ma ocenę 4, ale najwcześniej jeden z jej pracowników jest dostępny za 5 godzin.
Dlatego wynik sortowania musi być B, A.
Chciałbym dodać specjalną wagę do każdej z tych danych, więc zacząłem pisać agregacje, które będę mógł później wykorzystać w moim skrypcie custom_score.
Pełny sens tworzenia indeksu, importowania danych i wyszukiwania
Teraz udało mi się napisać zapytanie, które faktycznie zwraca wynik, ale zasobnik agregacji dostępności jest pusty. Jednak wyniki są zbyt ustrukturyzowane, chciałbym je spłaszczyć.
Obecnie wracam:
IDS firmy -> IDS pracowników -> pierwsza dostępność
Chciałbym mieć agregację taką jak:
IDS firmy -> pierwsza dostępność
W ten sposób mogę zrobić swoje custom_score
skrypt, aby obliczyć wynik i odpowiednio je posortować.
Bardziej uproszczone pytanie: w
jaki sposób można sortować / agregować według wielopoziomowych (wielkich) elementów potomnych i ewentualnie spłaszczyć wynik.