Explain APIedit

The explain api computes a score explanation for a query and a specific document. This can give useful feedback whether a document matches or didn’t match a specific query.

The index and type parameters expect a single index and a single type respectively.


Full query example:

curl -XGET 'localhost:9200/twitter/tweet/1/_explain' -d '{
      "query" : {
        "term" : { "message" : "search" }

This will yield the following result:

  "matches" : true,
  "explanation" : {
    "value" : 0.15342641,
    "description" : "fieldWeight(message:search in 0), product of:",
    "details" : [ {
      "value" : 1.0,
      "description" : "tf(termFreq(message:search)=1)"
    }, {
      "value" : 0.30685282,
      "description" : "idf(docFreq=1, maxDocs=1)"
    }, {
      "value" : 0.5,
      "description" : "fieldNorm(field=message, doc=0)"
    } ]

There is also a simpler way of specifying the query via the q parameter. The specified q parameter value is then parsed as if the query_string query was used. Example usage of the q parameter in the explain api:

curl -XGET 'localhost:9200/twitter/tweet/1/_explain?q=message:search'

This will yield the same result as the previous request.

All parameters:edit


Set to true to retrieve the _source of the document explained. You can also retrieve part of the document by using _source_include & _source_exclude (see Get API for more details)


Allows to control which stored fields to return as part of the document explained.


Controls the routing in the case the routing was used during indexing.


Same effect as setting the routing parameter.


Controls on which shard the explain is executed.


Allows the data of the request to be put in the query string of the url.


The query string (maps to the query_string query).


The default field to use when no field prefix is defined within the query. Defaults to _all field.


The analyzer name to be used when analyzing the query string. Defaults to the analyzer of the _all field.


Should wildcard and prefix queries be analyzed or not. Defaults to false.


Should terms be automatically lowercased or not. Defaults to true.


If set to true will cause format based failures (like providing text to a numeric field) to be ignored. Defaults to false.


The default operator to be used, can be AND or OR. Defaults to OR.