mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 21:18:31 +00:00
185dff7346
Refactored ScriptType to clean up some of the variable and method names. Added more documentation. Deprecated the 'in' ParseField in favor of 'stored' to match the indexed scripts being replaced by stored scripts.
128 lines
3.3 KiB
Plaintext
128 lines
3.3 KiB
Plaintext
[[query-dsl-template-query]]
|
|
=== Template Query
|
|
|
|
deprecated[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:
|
|
|
|
[source,js]
|
|
------------------------------------------
|
|
GET /_search
|
|
{
|
|
"query": {
|
|
"template": {
|
|
"inline": { "match": { "text": "{{query_string}}" }},
|
|
"params" : {
|
|
"query_string" : "all about search"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
------------------------------------------
|
|
// CONSOLE
|
|
// TEST[warning:[template] query is deprecated, use search template api instead]
|
|
|
|
The above request is translated into:
|
|
|
|
[source,js]
|
|
------------------------------------------
|
|
GET /_search
|
|
{
|
|
"query": {
|
|
"match": {
|
|
"text": "all about search"
|
|
}
|
|
}
|
|
}
|
|
------------------------------------------
|
|
// CONSOLE
|
|
|
|
Alternatively passing the template as an escaped string works as well:
|
|
|
|
[source,js]
|
|
------------------------------------------
|
|
GET /_search
|
|
{
|
|
"query": {
|
|
"template": {
|
|
"inline": "{ \"match\": { \"text\": \"{{query_string}}\" }}", <1>
|
|
"params" : {
|
|
"query_string" : "all about search"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
------------------------------------------
|
|
// CONSOLE
|
|
// TEST[warning:[template] query is deprecated, use search template api instead]
|
|
|
|
<1> New line characters (`\n`) should be escaped as `\\n` or removed,
|
|
and quotes (`"`) should be escaped as `\\"`.
|
|
|
|
==== Stored templates
|
|
|
|
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 `file`
|
|
parameter:
|
|
|
|
|
|
[source,js]
|
|
------------------------------------------
|
|
GET /_search
|
|
{
|
|
"query": {
|
|
"template": {
|
|
"file": "my_template", <1>
|
|
"params" : {
|
|
"query_string" : "all about search"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
------------------------------------------
|
|
// CONSOLE
|
|
// TEST[warning:[template] query is deprecated, use search template api instead]
|
|
|
|
<1> Name of the query template in `config/scripts/`, i.e., `my_template.mustache`.
|
|
|
|
Alternatively, you can register a query template in the cluster state with:
|
|
|
|
[source,js]
|
|
------------------------------------------
|
|
PUT /_search/template/my_template
|
|
{
|
|
"template": { "match": { "text": "{{query_string}}" }}
|
|
}
|
|
------------------------------------------
|
|
// CONSOLE
|
|
|
|
and refer to it in the `template` query with the `id` parameter:
|
|
|
|
|
|
[source,js]
|
|
------------------------------------------
|
|
GET /_search
|
|
{
|
|
"query": {
|
|
"template": {
|
|
"stored": "my_template", <1>
|
|
"params" : {
|
|
"query_string" : "all about search"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
------------------------------------------
|
|
// CONSOLE
|
|
// TEST[continued]
|
|
// TEST[warning:[template] query is deprecated, use search template api instead]
|
|
|
|
<1> Name of the query template in `config/scripts/`, i.e., `my_template.mustache`.
|
|
|
|
|
|
There is also a dedicated `template` endpoint, allows you to template an entire search request.
|
|
Please see <<search-template>> for more details.
|