NOTE: You are looking at documentation for an older release. For the latest information, see the current release documentation.
Search Template
editSearch Template
editSee Search Template documentation
Define your template parameters as a Map<String,Object>
:
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:
{ "query" : { "match" : { "gender" : "{{param_gender}}" } } }
Create your search template request:
SearchResponse sr = new SearchTemplateRequestBuilder(client) .setScript("template_gender") .setScriptType(ScriptService.ScriptType.FILE) .setScriptParams(template_params) .setRequest(new SearchRequest()) .get() .getResponse();
template name |
|
template stored on disk in |
|
parameters |
|
set the execution context (ie. define the index name here) |
|
execute and get the template response |
|
get from the template response the search response itself |
You can also store your template in the cluster state:
client.admin().cluster().preparePutStoredScript() .setScriptLang("mustache") .setId("template_gender") .setSource(new BytesArray( "{\n" + " \"query\" : {\n" + " \"match\" : {\n" + " \"gender\" : \"{{param_gender}}\"\n" + " }\n" + " }\n" + "}")).get();
To execute a stored templates, use ScriptService.ScriptType.STORED
:
SearchResponse sr = new SearchTemplateRequestBuilder(client) .setScript("template_gender") .setScriptType(ScriptType.STORED) .setScriptParams(template_params) .setRequest(new SearchRequest()) .get() .getResponse();
template name |
|
template stored in the cluster state |
|
parameters |
|
set the execution context (ie. define the index name here) |
|
execute and get the template response |
|
get from the template response the search response itself |
You can also execute inline templates: