Поддерживает ли rescore вложенные запросы?

Я пытаюсь пересмотреть результаты моего запроса, используя вложенный запрос, но я получаю следующее исключение, которое, как я считаю, означает, что rescore не поддерживает вложенные запросы:

nested: ElasticsearchIllegalArgumentException[rescore doesn't support [path]];

Это так?

Вложенные объекты содержат ключевое поле, которое должно быть сопоставлено, и поле веса, которое следует использовать в качестве оценки. Вот запрос:

POST myindex/_search
{
 "query" : {
    "match" : {
       "field1" : {
          "query" : "my_query_string",
          "type" : "boolean"
       }
    }
 },
 "rescore" : {
    "window_size" : 50,
    "query": {
      "nested": {
        "path": "path.to.nested.object",
        "score_mode" : "avg",
        "query": {
          "function_score": {
            "query":{
              "constant_score": {
                "query": { 
                  "match": {
                    "path.to.nested.object.key": "my_query_string"
                  }
                }
              }
            },
            "script_score": {
              "script": "doc['path.to.nested.object.weight'].value"
            }
          }
        }
      }
    }
  }
}

1 ответ

Решение

В вашем запросе есть синтаксическая ошибка. При переоценке вам нужно использовать rescore_query, так как query_rescorer - единственная поддерживаемая реализация на данный момент.

Следующее должно работать:

POST myindex/_search
{
   "query": {
      "match": {
         "field1": {
            "query": "my_query_string",
            "type": "boolean"
         }
      }
   },
   "rescore": {
      "window_size": 50,
      "query": {
         "rescore_query": {
            "nested": {
               "path": "path.to.nested.object",
               "score_mode": "avg",
               "query": {
                  "function_score": {
                     "query": {
                        "constant_score": {
                           "query": {
                              "match": {
                                 "path.to.nested.object.key": "my_query_string"
                              }
                           }
                        }
                     },
                     "script_score": {
                        "script": "doc['path.to.nested.object.weight'].value"
                     }
                  }
               }
            }
         }
      }
   }
}
Другие вопросы по тегам