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: