Я использую Elasticsearch для поиска японских документов и объединения нескольких полей (Морфологический анализ + N-Грамм) для запросов.Elasticsearch: как отсортировать результат запроса строки запроса?
Запрос ниже:
{
"query":{
"bool":{
"must":{
"query_string":{
"query":"QUERY_KEYWORD",
"fields":[
"title",
"description",
"content",
"content.ngram^3"
]
}
},
"should":[
[
{
"range":{
"created":{
"boost":"5",
"gte":"now-1M"
}
}
}
]
]
}
}
"sort":{
"view_count": {"order": "desc"}
}
}
возвращает каждый документ в индексе отсортированные по view_count
(не обращая внимания на счет от query_string
), который является не то, что я хочу.
Многоуровневая сортировка не работает хорошо либо:
"sort": [
{ "view_count": { "order": "desc" }},
{ "_score": { "order": "desc" }}
]
возвращает то же самое, что и предыдущий запрос, и
"sort": [
{ "_score": { "order": "desc" }},
{ "view_count": { "order": "desc" }}
]
dosen't рода вообще ничего (я подозреваю, view_count
только работает в качестве браслетера для _score
).
Вопрос: Как я могу получить документы, соответствующие QUERY_KEYWORD
, отсортированным по view_count
?
Заранее спасибо.
Спасибо. Насколько я понимаю, что запросы с функциями функции работают против другого запроса? Я понял, что сам запрос 'query_string' возвращает каждый документ в индексе, поэтому получить хороший результат сортировки может быть невозможно. – osyoyu
Хм, не уверен, что вы имеете в виду, если вы не предоставляете аргумент запроса запросу query_string, он равен запросу match_all. Но если вы действительно ищете слово, запрос query_string не будет возвращать все документы. –