123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- [[search-explain]]
- == Explain API
- 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.
- [float]
- === Usage
- Imagine having indexed the following document:
- [source,js]
- ----------------------------------------
- PUT /twitter/tweet/1?refresh
- {
- "user": "kimchy",
- "message": "search"
- }
- ---------------------------------------
- // CONSOLE
- // TESTSETUP
- Full query example:
- [source,js]
- --------------------------------------
- GET /twitter/tweet/1/_explain
- {
- "query" : {
- "term" : { "message" : "search" }
- }
- }
- --------------------------------------
- // CONSOLE
- This will yield the following result:
- [source,js]
- --------------------------------------------------
- {
- "_index": "twitter",
- "_type": "tweet",
- "_id": "1",
- "matched": true,
- "explanation": {
- "value": 1.0,
- "description": "sum of:",
- "details": [
- {
- "value": 1.0,
- "description": "weight(message:search in 0) [PerFieldSimilarity], result of:",
- "details": [
- {
- "value": 1.0,
- "description": "fieldWeight in 0, product of:",
- "details": [
- {
- "value": 1.0,
- "description": "tf(freq=1.0), with freq of:",
- "details": [
- {
- "value": 1.0,
- "description": "termFreq=1.0",
- "details": []
- }
- ]
- },
- {
- "value": 1.0,
- "description": "idf(docFreq=1, docCount=1)",
- "details": []
- },
- {
- "value": 1.0,
- "description": "fieldNorm(doc=0)",
- "details": []
- }
- ]
- }
- ]
- },
- {
- "value": 0.0,
- "description": "match on required clause, product of:",
- "details": [
- {
- "value": 0.0,
- "description": "# clause",
- "details": []
- },
- {
- "value": 1.0,
- "description": "_type:tweet, product of:",
- "details": [
- {
- "value": 1.0,
- "description": "boost",
- "details": []
- },
- {
- "value": 1.0,
- "description": "queryNorm",
- "details": []
- }
- ]
- }
- ]
- }
- ]
- }
- }
- --------------------------------------------------
- // TESTRESPONSE
- 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:
- [source,js]
- --------------------------------------------------
- GET /twitter/tweet/1/_explain?q=message:search
- --------------------------------------------------
- // CONSOLE
- This will yield the same result as the previous request.
- [float]
- === All parameters:
- [horizontal]
- `_source`::
- 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-source-filtering,Get API>> for more details)
- `fields`::
- Allows to control which stored fields to return as part of the
- document explained.
- `routing`::
- Controls the routing in the case the routing was used
- during indexing.
- `parent`::
- Same effect as setting the routing parameter.
- `preference`::
- Controls on which shard the explain is executed.
- `source`::
- Allows the data of the request to be put in the query
- string of the url.
- `q`::
- The query string (maps to the query_string query).
- `df`::
- The default field to use when no field prefix is defined within
- the query. Defaults to _all field.
- `analyzer`::
- The analyzer name to be used when analyzing the query
- string. Defaults to the analyzer of the _all field.
- `analyze_wildcard`::
- Should wildcard and prefix queries be analyzed or
- not. Defaults to false.
- `lowercase_expanded_terms`::
- Should terms be automatically lowercased
- or not. Defaults to true.
- `lenient`::
- If set to true will cause format based failures (like
- providing text to a numeric field) to be ignored. Defaults to false.
- `default_operator`::
- The default operator to be used, can be AND or
- OR. Defaults to OR.
|