diff --git a/docs/java-api/search.asciidoc b/docs/java-api/search.asciidoc index b1bbe59b3a6..469039715a5 100644 --- a/docs/java-api/search.asciidoc +++ b/docs/java-api/search.asciidoc @@ -145,3 +145,70 @@ DateHistogram agg2 = sr.getAggregations().get("agg2"); See <> documentation for details. + +[[java-search-template]] +=== Using Search Templates + +See {ref}/search-template.html[Search Template] documentation + +Define your template parameters as a `Map`: + +[source,java] +-------------------------------------------------- +Map 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(); +--------------------------------------------------