Named rescore queries

Viewed 76

Named queries help me to identify which part of the query hit. For normal queries this works perfectly. However for rescore queries named queries don't show up in the response.

Question: Is this a bug or intentional? Is there a workaround?


Update: I raised a feature request


I attached some code to reproduce the problem:

Set up a test index with a single document

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

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

"Normal" and rescore query.

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

Response: Only the name of the "normal" query shows up in matched_queries. That "query_field_2" must have also hit can be ensured by comparing the score with and without the rescore query.

{
  "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 Answers

The naming is perhaps unfortunate but the rescore query just tweaks the scoring and is applied after the query and post_filter phases. So since it's not an actual query, it cannot be _named.

It's certainly worth a feature request though.

Related