Запрос релевантности оценки вложенных полей Elasticsearch Boost - PullRequest
0 голосов
/ 25 марта 2020

У меня есть индекс эластичного поиска (студенты) со следующим отображением:

{
    "name": {
        "type": "text"
    },
    "age": {
        "type": "integer"
    },
    "tests": {
        "type": "nested",
        "properties": {
            "id": {
                "type": "integer"
            },
            "score": {
                "type": "float"
            }
        }
    }
}
}

тесты - это вложенное поле, содержащее тесты, которые студент сдал вместе с оценкой этого теста. Я хочу запросить студентов с некоторым совпадающим именем, некоторым возрастным диапазоном и, что более важно, с помощью тестов следующим образом:

  • пользователь может запросить данные для тестов двумя способами
  • сначала - mustPassedTests эти тесты вместе с предоставленным баллом должны присутствовать в тесте студента с заданным идентификатором и данным баллом> =
  • секунда - mustPassTests, это нормально, если их нет у студента (если есть обязательный пароль)
  • если в запросе присутствуют mustPassTest и shouldPassTest, shouldPass просто не участвует в фильтрации, а просто влияет на оценку
  • , если запрашивается только тест shouldPassTest (а не mustPass), любой один из заданных тестов shouldPass должен присутствовать в студенческих тестах

, например, для студента, имеющего данные как {name: "jason", тесты: [{id: 1, оценка: 12}]} и другой как {"name": "flock", tests: [{id: 1, Score: 10}, {id: 2, Score: 8}]}, если я запрашиваю тесты mustPass с mustPassTest как [{id: 1, оценка> = 10}], shouldPassTes t как [{id: 2, Score> = 10}], тогда оба ученика должны быть возвращены, но «наброситься» на более высокий рейтинг, поскольку он обладает обоими тестами (должен иметь соответствующий диапазон баллов и должен присутствовать в своем тесте)

как можно написать запрос ?? (используя отдыхающий клиент) Elasticsearch Версия: 7.5.x

...