Назначьте пользовательские оценки предложениям в логическом запросе в Elasticsearch

#elasticsearch #scoring #booleanquery

Вопрос:

В Elasticsearch я тестирую следующий запрос:

 GET sdata/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "f1": "sth" } }
      ],
      "should": [
        { "match": { "f2": "sth" } }
      ]
    }
  }
}
 

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

Заранее спасибо

Ответ №1:

Вы можете использовать boost параметр вместе с should предложением

 {
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "f1": "sth"
          }
        }
      ],
      "should": [
        {
          "match": {
            "f2": {
              "query": "sth",
              "boost": 10
            }
          }
        }
      ]
    }
  }
}