[Doc] Java API: add search templates

Closes #7321.
This commit is contained in:
David Pilato 2014-11-30 21:17:53 +01:00
parent 171e718f88
commit 778f76adea
1 changed files with 67 additions and 0 deletions

View File

@ -145,3 +145,70 @@ DateHistogram agg2 = sr.getAggregations().get("agg2");
See <<java-aggs,Aggregations Java API>>
documentation for details.
[[java-search-template]]
=== Using Search Templates
See {ref}/search-template.html[Search Template] documentation
Define your template parameters as a `Map<String,Object>`:
[source,java]
--------------------------------------------------
Map<String, Object> template_params = new HashMap<>();
template_params.put("param_gender", "male");
--------------------------------------------------
You can use your stored search templates in `config/scripts`.
For example, if you have a file named `config/scripts/template_gender.mustache` containing:
[source,js]
--------------------------------------------------
{
"template" : {
"query" : {
"match" : {
"gender" : "{{param_gender}}"
}
}
}
}
--------------------------------------------------
Execute it with:
[source,java]
--------------------------------------------------
SearchResponse sr = client.prepareSearch()
.setTemplateName("template_gender")
.setTemplateType(ScriptService.ScriptType.FILE)
.setTemplateParams(template_params)
.get();
--------------------------------------------------
You can also store your template in a special index named `.scripts`:
[source,java]
--------------------------------------------------
client.preparePutIndexedScript("mustache", "template_gender",
"{\n" +
" \"template\" : {\n" +
" \"query\" : {\n" +
" \"match\" : {\n" +
" \"gender\" : \"{{param_gender}}\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}").get();
--------------------------------------------------
To execute an indexed templates, use `ScriptService.ScriptType.INDEXED`:
[source,java]
--------------------------------------------------
SearchResponse sr = client.prepareSearch()
.setTemplateName("template_gender")
.setTemplateType(ScriptService.ScriptType.INDEXED)
.setTemplateParams(template_params)
.get();
--------------------------------------------------