Я хочу найти три поля: title^3
с усилением 3 , desc^2
с усилением 2 и body
. Допустим, я ищу строка refuse eating
, я хочу, чтобы статьи, которые содержат оба слова (или больше) в любом из упомянутых полей, показывались первыми, а затем статьи, которые содержат любое из слов, которые идут вторыми.
Я пробовал с must
s multi_match
, но первые результаты содержат только одно слово, другое слово отсутствует ни в одном из полей.
Вот код, который я пробовал:
GET my_index/_search
{
"query": {
"bool": {
"must_not": [
{"exists": {"field": "deleted"}}
],
"must": [
{
"multi_match": {
"query": "refuse eating",
"fields": [
"title^3",
"desc^2",
"body"
],
"type": "best_fields"
}
}
],
"filter": [
{"term": {"kind": "article"}},
{"term": {"status": "published"}}
]
}
}
}
Я ищу что-то вроде этого:
article1 : содержит строку refuse eating
в title
(или body
), это должно быть на первом месте.
article2 : имеет слово refuse
в desc
и слово eating
в body
, это второе после.
article3 : содержит только одно слово из строки запроса refuse
или eating
, это должно быть последним.
Я хочу, чтобы результаты были в следующем порядке:
- Article1
- 1054 * Статья 2 *
- 1056 * Статья 3. *
Заранее спасибо.