Template Query
editTemplate Query
editDeprecated in 5.0.0.
Use the Search Template API
A query that accepts a query template and a map of key/value pairs to fill in template parameters. 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": {
"inline": { "match": { "text": "{{query_string}}" }},
"params" : {
"query_string" : "all about search"
}
}
}
}
The above request is translated into:
GET /_search
{
"query": {
"match": {
"text": "all about search"
}
}
}
Alternatively passing the template as an escaped string works as well:
GET /_search
{
"query": {
"template": {
"inline": "{ \"match\": { \"text\": \"{{query_string}}\" }}",
"params" : {
"query_string" : "all about search"
}
}
}
}
|
New line characters ( |
Stored templates
editYou 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 file
parameter:
GET /_search
{
"query": {
"template": {
"file": "my_template",
"params" : {
"query_string" : "all about search"
}
}
}
}
Alternatively, you can register a query template in the cluster state with:
PUT /_search/template/my_template
{
"template": { "match": { "text": "{{query_string}}" }}
}
and refer to it in the template query with the id parameter:
GET /_search
{
"query": {
"template": {
"stored": "my_template",
"params" : {
"query_string" : "all about search"
}
}
}
}
There is also a dedicated template endpoint, allows you to template an entire search request.
Please see Search Template for more details.