0

ネストされたクエリを使用してクエリ結果を再スコアリングしようとしていますが、次の例外が発生します。これは、再スコアリングがネストされたクエリをサポートしていないことを意味すると考えています。

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"
            }
          }
        }
      }
    }
  }
}
4

1 に答える 1

2

クエリに構文エラーがあります re-score を使用する場合は 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"
                     }
                  }
               }
            }
         }
      }
   }
}
于 2014-09-18T19:24:44.817 に答える