Skip to content

Commit

Permalink
[Doc] Java API: add search templates
Browse files Browse the repository at this point in the history
Closes elastic#7321.

(cherry picked from commit ee108e5)
  • Loading branch information
dadoonet committed Dec 3, 2014
1 parent 6881267 commit 1fbfca4
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions docs/java-api/search.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -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,String>`:

[source,java]
--------------------------------------------------
Map<String, String> 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();
--------------------------------------------------

0 comments on commit 1fbfca4

Please sign in to comment.