Запросы с именем rescore

#elasticsearch

#elasticsearch

Вопрос:

Именованные запросы помогают мне определить, какая часть запроса попала в цель. Для обычных запросов это работает отлично. Однако для запросов rescore именованные запросы не отображаются в ответе.

Вопрос: Это ошибка или намеренная? Есть ли обходной путь?


Обновление: я поднял запрос на функцию


Я приложил некоторый код, чтобы воспроизвести проблему:

Настройка тестового индекса с помощью одного документа

 PUT /test
{
  "mappings": {
    "properties": {
      "field1": {
        "type": "keyword"
      },
      "field2": {
        "type": "keyword"
      }
    }
  }
}

POST /test/_doc/1
{
  "field1": "a",
  "field2": "b"
}
 

«Обычный» и повторный запрос.

 GET /test/_search
{
  "query": {
    "term": {
      "field1": {
        "value": "a",
        "_name": "query_field_1"
      }
    }
  },
  "rescore": {
    "query": {
      "rescore_query": {
        "term": {
          "field2": {
            "value": "b",
            "_name": "query_field_2"
          }
        }
      }
    },
    "window_size": 50
  }
}
 

Ответ: в нем отображается только имя «обычного» запроса matched_queries .
То, что «query_field_2» также должен был попасть, можно обеспечить, сравнив оценку с запросом rescore и без него.

 {
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.5753642,
    "hits" : [
      {
        "_index" : "test",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.5753642,
        "_source" : {
          "field1" : "a",
          "field2" : "b"
        },
        "matched_queries" : [
          "query_field_1"  <<-----HERE I'D EXPECT query_field_2------
        ]
      }
    ]
  }
}
 

Ответ №1:

Возможно, присвоение имен является неудачным, но запрос rescore просто изменяет оценку и применяется после этапов query и post_filter . Так что, поскольку это не актуально query , этого не может быть _named .

Тем не менее, это, безусловно, стоит запроса функции.

Комментарии:

1. Это то, чего я боялся. Тем не менее, спасибо за подтверждение.