WARNING: Version 1.3 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Template Query
editTemplate Query
editAdded in 1.1.0.
A query that accepts a query template and a map of key/value pairs to fill in template parameters.
GET /_search { "query": { "template": { "query": {"match_{{template}}": {}}, "params" : { "template" : "all" } } } }
Alternatively passing the template as an escaped string works as well:
GET /_search { "query": { "template": { "query": "{\"match_{{template}}\": {}}\"", "params" : { "template" : "all" } } } }
New line characters ( |
You can register a template by storing it in the config/scripts
directory, in a file using the .mustache
extension.
In order to execute the stored template, reference it by name in the query
parameter:
GET /_search { "query": { "template": { "query": "storedTemplate", "params" : { "template" : "all" } } } }
Templating is based on Mustache. For simple token substitution all you provide is a query containing some variable that you want to substitute and the actual values:
GET /_search { "query": { "template": { "query": {"match_{{template}}": {}}, "params" : { "template" : "all" } } } }
which is then turned into:
{ "query": { "match_all": {} } }
Added in 1.3.0.
You can register a template by storing it in the elasticsearch index .scripts
or by using the REST API. (See Search Template for more details)
In order to execute the stored template, reference it by name in the query
parameter:
GET /_search { "query": { "template": { "query": "templateName", "params" : { "template" : "all" } } } }
GET /_search { "query": { "template": { "query": "storedTemplate", "params" : { "template" : "all" } } } }
There is also a dedicated template
endpoint, allows you to template an entire search request.
Please see Search Template for more details.