# ES и рекомендательная система

**URL:** https://discuss.elastic.co/t/es/358340
**Category:** Вопросы на русском языке
**Created:** [April 27, 2024, 1:43pm UTC](https://discuss.elastic.co/t/es/358340 "2024-04-27T13:43:38Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![alexander.korkhov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/alexander.korkhov/32/133918_2.png) [@alexander.korkhov](https://discuss.elastic.co/u/alexander.korkhov)
#### Post date: [April 27, 2024, 1:43pm UTC](https://discuss.elastic.co/t/es/358340/1 "2024-04-27T13:43:38Z")

</div>

Имеется база товаров, для товаров периодически рассчитывается значение популярности. Построен индекс в ES, есть сортировка по значению популярности.  
Есть задача прикрутить рекомендательную систему. Рекомендательная система для каждого user\_id выдает N рекомендованных товаров со значением рекомендации от 0 до 1.  
Требуется выдавать товары для каждого пользователя таким образом: сначала те, у которых популярность \>А (топовые товары) отсортированные по популярности, потом рекомендованные для пользователя (отсортированы), потом все остальные отсортированные по популярности.  
Как эту сортировку можно реализовать на уровне ES? Как туда уложить рекомендации пользователей?

---

<div class="post-metadata">

### Author: ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)
#### Post date: [September 27, 2024, 12:17pm UTC](https://discuss.elastic.co/t/es/358340/2 "2024-09-27T12:17:46Z")

</div>

> **[Function score query | Elasticsearch Guide \[8.15\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)**

второй пример отсюда. Основной запрос вкладываем как "function\_score": {  
"query"

по текущему пользователю выбираем взвешенные айди-товаров. каждый айди указывается в терм запросе  
под "functions": [  
{  
"filter": {  
не и рядом вес.
