Имеется база товаров, для товаров периодически рассчитывается значение популярности. Построен индекс в ES, есть сортировка по значению популярности.
Есть задача прикрутить рекомендательную систему. Рекомендательная система для каждого user_id выдает N рекомендованных товаров со значением рекомендации от 0 до 1.
Требуется выдавать товары для каждого пользователя таким образом: сначала те, у которых популярность >А (топовые товары) отсортированные по популярности, потом рекомендованные для пользователя (отсортированы), потом все остальные отсортированные по популярности.
Как эту сортировку можно реализовать на уровне ES? Как туда уложить рекомендации пользователей?
второй пример отсюда. Основной запрос вкладываем как "function_score": {
"query"
по текущему пользователю выбираем взвешенные айди-товаров. каждый айди указывается в терм запросе
под "functions": [
{
"filter": {
не и рядом вес.