#elasticsearch
Вопрос:
Имея следующие документы в elasticsearch, как лучше выполнить запрос, чтобы получить наиболее популярные отдельные продукты (по popularity_score) с наиболее ранжированной категорией? Ожидаемый результат:
- Категория 4 (Продукт 2
popularity_score:2
выше, чем продукт 1 (popularity_score:10
), а категория 4rank:"1.0.0"
оценивается выше, чем Категория 3) - Категория 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, что ты об этом думаешь? Возможно ли с помощью моего моделирования данных достичь результатов?