| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | [[java-rest-high-multi-search-template]]=== Multi-Search-Template APIThe `multiSearchTemplate` API executes multiple <<java-rest-high-search-template,`search template`>>requests in a single http request in parallel.[[java-rest-high-multi-search-template-request]]==== Multi-Search-Template RequestThe `MultiSearchTemplateRequest` is built empty and you add all of the searches thatyou wish to execute to it:["source","java",subs="attributes,callouts,macros"]--------------------------------------------------include-tagged::{doc-tests}/SearchDocumentationIT.java[multi-search-template-request-inline]--------------------------------------------------<1> Create an empty `MultiSearchTemplateRequest`.<2> Create one or more `SearchTemplateRequest` objects and populate them just like youwould for a regular <<java-rest-high-search-template,`search template`>>.<3> Add the `SearchTemplateRequest` to the `MultiSearchTemplateRequest`.===== Optional argumentsThe multiSearchTemplate's `max_concurrent_searches` request parameter can be used to controlthe maximum number of concurrent searches the multi search api will execute.This default is based on the number of data nodes and the default search thread pool size.[[java-rest-high-multi-search-template-sync]]==== Synchronous ExecutionThe `multiSearchTemplate` method executes `MultiSearchTemplateRequest`s synchronously:["source","java",subs="attributes,callouts,macros"]--------------------------------------------------include-tagged::{doc-tests}/SearchDocumentationIT.java[multi-search-template-request-sync]--------------------------------------------------[[java-rest-high-multi-search-template-async]]==== Asynchronous ExecutionThe `multiSearchTemplateAsync` method executes `MultiSearchTemplateRequest`s asynchronously,calling the provided `ActionListener` when the response is ready.["source","java",subs="attributes,callouts,macros"]--------------------------------------------------include-tagged::{doc-tests}/SearchDocumentationIT.java[multi-search-template-execute-async]--------------------------------------------------The parameters are the `MultiSearchTemplateRequest` to execute and the `ActionListener` to use whenthe execution completesThe asynchronous method does not block and returns immediately. Once it iscompleted the `ActionListener` is called back using the `onResponse` methodif the execution successfully completed or using the `onFailure` method ifit failed.A typical listener for `MultiSearchTemplateResponse` looks like:["source","java",subs="attributes,callouts,macros"]--------------------------------------------------include-tagged::{doc-tests}/SearchDocumentationIT.java[multi-search-template-execute-listener]--------------------------------------------------<1> Called when the execution is successfully completed.<2> Called when the whole `MultiSearchTemplateRequest` fails.==== MultiSearchTemplateResponseThe `MultiSearchTemplateResponse` that is returned by executing the `multiSearchTemplate` method containsa `MultiSearchTemplateResponse.Item` for each `SearchTemplateRequest` in the`MultiSearchTemplateRequest`. Each `MultiSearchTemplateResponse.Item` contains anexception in `getFailure` if the request failed or a<<java-rest-high-search-response,`SearchResponse`>> in `getResponse` ifthe request succeeded:["source","java",subs="attributes,callouts,macros"]--------------------------------------------------include-tagged::{doc-tests}/SearchDocumentationIT.java[multi-search-template-response]--------------------------------------------------<1> An array of responses is returned - one response for each request<2> Failed search template requests have error messages<3> Successful requests contain a <<java-rest-high-search-response,`SearchResponse`>> in`getResponse`.
 |