mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 04:58:50 +00:00
1e587406d8
Adds `warnings` syntax to the yaml test that allows you to expect a `Warning` header that looks like: ``` - do: warnings: - '[index] is deprecated' - quotes are not required because yaml - but this argument is always a list, never a single string - no matter how many warnings you expect get: index: test type: test id: 1 ``` These are accessible from the docs with: ``` // TEST[warning:some warning] ``` This should help to force you to update the docs if you deprecate something. You *must* add the warnings marker to the docs or the build will fail. While you are there you *should* update the docs to add deprecation warnings visible in the rendered results.
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": {
|
|
"id": "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.
|