Я пользуюсь elasticsearch 2.3Elasticsearch 2.x, запрос для тега и сортировка результатов по тегу weigth
У меня есть индекс книг. каждая книга имеет тег, и каждый тег имеет вес. Я хочу получить все книги с запрошенным тегом, отсортированные по весу тегов.
, например:
PUT book/book/0
{
"name": "book 0",
"tags": [
{"t": "comedy", "w": 30},
{"t": "drama","w": 20},
]
}
PUT book/book/1
{
"name": "book 1",
"tags": [
{"t": "comedy", "w": 10},
{"t": "drama","w": 5},
{"t": "other","w": 50},
]
}
PUT book/book/2
{
"name": "book 2",
"tags": [
{"t": "comedy", "w": 5},
{"t": "drama","w": 30},
]
}
PUT book/book/3
{
"name": "book 3",
"tags": [
{"t": "comedy", "w": 5},
{"t": "other","w": 30},
]
}
я хочу, чтобы найти все книги, которые имеет теги комедии и драмы. порядок результат:
- книга 0 (20 + 30)
- Книга 2 (30 + 5)
- Книга 1 (10 + 5)
ОБНОВЛЕНИЕ: я хочу чтобы возвращать только книги, соответствующие обоим тегам (и сортировать только по запрошенным тегам). поэтому, если я ищу «драму» и «комедию», возвращаются только те книги, у которых есть оба тега (в данном случае книга 0, книга 1, книга2), отсортированные по требуемым весам тегов.
как я могу это получить? любой пример запроса?
thanks @Christoph Wurm. единственная проблема, с которой я сталкиваюсь сейчас, заключается в том, что она вернет все книги, комедии или драмы, в тегах. но мне нужны все книги, комедии и драмы в тегах. вы можете помочь? –
@EyalCh Да, я положил его в ответ. –
спасибо, что работает !. просто чтобы понять: в вашем обновленном ответе я не вижу «score_mode»: «sum». как это окупить счет? это по умолчанию?если я хочу забить его другим счетом (например, avg?). Благодарю. –