У мене є батьківська / дитяча структура на 3 рівнях. Скажімо:
Компанія -> Співробітник -> Наявність
Оскільки Доступність (а також Співробітник) тут часто оновлюється, я вибираю використання батьківської / дочірньої структури проти вкладених. І функція пошуку чудово працює (усі документи мають правильні фрагменти).
Тепер я хочу відсортувати ці результати. Сортувати їх за метаданими від компанії (1-й рівень) легко. Але мені також потрібно сортувати за 3-м рівнем (доступність).
Я хочу список компаній, які сортуються за:
- Відстань від місця, вказаного ASC
- Рейтинг DESC
- Найближча доступність ASC
Наприклад:
Компанія А знаходиться на відстані 5 миль, має рейтинг 4 і найближчим часом один із їх співробітників стає доступним через 20 годин. Компанія В також знаходиться на відстані 5 миль, також має рейтинг 4, але найближчим часом один із їх працівників доступний через 5 годин.
Тому результат сортування повинен бути B, A.
Я хотів би додати особливої ваги кожному з цих даних, тому я почав писати агрегації, які згодом міг би використовувати у своєму скрипті custom_score.
Повна суть створення індексу, імпортування даних та пошуку.
Зараз мені вдалося написати запит, який фактично повертає результат, але сегмент агрегації доступності порожній. Однак я також отримую результати назад занадто структурованими, я хотів би їх згладити.
В даний час я повертаюся:
Ідентифікатори компанії -> Ідентифікатори співробітників -> перша доступність
Я хотів би мати агрегацію, як:
Ідентифікатори компанії -> перша доступність
Таким чином я можу зробити свій custom_score
сценарій, щоб розрахувати оцінки та правильно їх відсортувати.
Більш спрощене запитання:
як можна сортувати / агрегувати за багаторівневими (великими) дітьми і, можливо, згладити результат.