Как написать запрос эластичного поиска, который соответствует термину и сортирует по порядку
Я пытаюсь написать запрос в asticsearch:
- Который ломает запрос и ищет каждое слово
- Поиск в нескольких полях, который соответствует большинству терминов.
- Это не увеличивает оценки релевантности, если поле содержит одно и то же слово, повторенное несколько раз.
- Для набора результатов он сортирует результат в порядке убывания времени.
Например, для четырех названий изображений ниже:
1. pic cat spa created_at 1.month.ago
2. pic car crash created_at 2.months.ago
3. pic sumo wrestler created_at 3.months.ago
4. pic car car crash created_at 5.months.ago
Результат должен быть:
1. A search for `car` should show 2. and then 4.
2. A search for `pic` should show 1. 2. 3. 4
3. A search for `pic spa cat` should show 1.
Запрос, который я написал, был:
GET /my_pics/_search
{
"sort" : [
"_score",
{"created" : "desc"}
],
"explain": true,
"query": {
"bool": {
"must": {
"multi_match": {
"query": "hello",
"fields": ["title", "description"],
"type": "cross_fields"
}
}
}
}
}
Но это дает более высокую актуальность к картинке с повторяющимся словом из запроса. Так что если в запросе "pic" или "car" повторяется несколько раз, это дает более высокий балл. Я не хочу этого Я хочу, чтобы он находил картинки с большинством слов запроса, не выдвигал релевантность, если одно слово повторяется несколько раз, но сужал результаты, когда добавлялось больше соответствующего запроса. В любом случае порядок созданного по убыванию сохраняется.