Запрос, чтобы получить самые популярные товары, заказанные по рангу категории

#elasticsearch

Вопрос:

Имея следующие документы в elasticsearch, как лучше выполнить запрос, чтобы получить наиболее популярные отдельные продукты (по popularity_score) с наиболее ранжированной категорией? Ожидаемый результат:

  1. Категория 4 (Продукт 2 popularity_score:2 выше, чем продукт 1 ( popularity_score:10 ), а категория 4 rank:"1.0.0" оценивается выше, чем Категория 3)
  2. Категория 5 (Категория 5 оценивается выше ( rank:2.0.0 ), чем категория 1( rank:4.0.0 ) и Категория 2( rank:9.0.0 )
 curl -XPOST 'https://local/test/_doc/' -H "Content-Type: application/json" -d'
 {
"id": 1,
"name": "Category 1",
"rank": "4.0.0",
"product":{"id":1, "name":"Product 1", "popularity_score":10}
 }'

curl -XPOST 'https://local/test/_doc/' -H "Content-Type: application/json" -d'
{
"id": 2,
"name": "Category 2",
"rank": "9.0.0",
"product":{"id":1, "name":"Product 1","popularity_score":10}
}'

curl -XPOST 'https://local/test/_doc/' -H "Content-Type: application/json" -d'
{
"id": 5,
"name": "Category 5",
"rank": "2.0.0",
"product":{"id":1, "name":"Product 1","popularity_score":10}
}'

curl -XPOST 'https://local/test/_doc/' -H "Content-Type: application/json" -d'
{
"id": 3,
"name": "Category 3",
"rank": "2.0.0",
"product":{"id":2, "name":"Product 2","popularity_score":2}
}'

curl -XPOST 'https://local/test/_doc/' -H "Content-Type: application/json" -d'
{
"id": 2,
"name": "Category 4",
"rank": "1.0.0",
"product":{"id":2, "name":"Product 2","popularity_score":2}
}'
 

Комментарии:

1. Каков тип поля «имя»?

2. @Сергей, как вы ожидаете получить категорию 4 и категорию 5? Не могли бы вы, пожалуйста, объяснить это ?

3.@ESCoder, я хотел бы сгруппировать его по product.id и упорядочить по его популярности и внутри агрегации по категориям rank . Так Product 2 как имеет popularity_score : 2 и в Category 4 rank is: 1.0.0 котором выше, чем категория 3, он занимает первое место.

4. @TusharShahi тип имени-ключевое слово, но я не рассматриваю этот момент для поиска по name

5. @ESCoder, что ты об этом думаешь? Возможно ли с помощью моего моделирования данных достичь результатов?