ElasticSearch: получение индивидуальных оценок по каждому запросу внутри запроса bool - PullRequest
0 голосов
/ 01 марта 2020

Предположим, у меня есть составной запрос bool с различными операторами "must" и "must", каждый из которых может включать в себя различные листовые запросы, в том числе запросы "multi-match" и "match_phrase", такие как ниже.

Как можно Я получаю оценку по отдельным запросам, упакованным в один запрос? Я знаю, что одним из способов может быть разбить его на несколько запросов, выполнить каждый, а затем агрегировать результаты на уровне кода (не на уровне запроса). Тем не менее, я полагаю, что это менее эффективно, плюс я теряю функции сортировки / разбиения на страницы / .... из ElasticSearch.

Я думаю, что "Объяснение API" также не полезно для меня, так как обеспечивает очень низкий уровень детали оценки (неэффективно и трудно для анализа), в то время как мне просто нужно знать оценку для каждого конкретного c листа запроса (который я уже назвал их)

Если я ошибаюсь в любой терминологии (например, состав, лист), пожалуйста, поправьте меня. Общая картина заключается в том, как получить индивидуальные оценки из каждого подзапроса в запросе bool.

PS: я встречал Различные функции оценки в запросе bool . Тем не менее, он не возвращает баллы. Если я заверну свои запросы в "function_score", я хочу, чтобы оценка была по умолчанию, но я получал отдельные оценки в ответ на запрос.

Пожалуйста, посмотрите фрагмент ниже:

{
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "...",
            "fields": [
              "field1^3",
              "field2^5"
            ],
            "_name": "must1_mm",
            "boost": 3
          }
        }
      ],
      "should": [
        {
          "multi_match": {
            "query": "...",
            "fields": [
              "field3^2",
              "field4^5"
            ],
            "boost": 2,
            "_name": "should1_mm",
            "boost": 2
          }
        },
          {
          "match_phrase": {
            "field5": {
              "_name": "phrase1",
              "boost": 1.5,
              "query": "..."
            }
          }
        },
        {
          "match_phrase": {
            "field6": {
              "_name": "phrase2",
              "boost": 1,
              "query": "..."
            }
          }
        }
      ]
    }
  }
}```


...