[role="xpack"]
[[put-search-application]]
=== Put Search Application
beta::[]
++++
Put Search Application
++++
Creates or updates a Search Application.
[[put-search-application-request]]
==== {api-request-title}
`PUT _application/search_application/`
[[put-search-application-prereqs]]
==== {api-prereq-title}
Requires the `manage_search_application` cluster privilege.
Also requires <> on all indices that are added to the Search Application.
[[put-search-application-path-params]]
==== {api-path-parms-title}
`create`::
(Optional, Boolean) If `true`, this request cannot replace or update existing Search Applications.
Defaults to `false`.
``::
(Required, object)
Contains parameters for a search application:
+
.Properties of `` objects
[%collapsible%open]
====
`indices`::
(Required, array of strings)
The <> associated with this search application. All indices need to exist in order to be added to a search application.
`template`::
(Optional, object)
The <> associated with this search application. The search application's template is only stored and accessible through the search application.
- This search template must be a Mustache template.
- The template must contain a Mustache script and script source.
- The template may be modified with subsequent <> requests.
- If no template is specified when creating a search application, or if a template is removed from a search application, we use the <> defined in the template examples as a default.
- This template will be used by the <> API to execute searches.
====
[[put-search-application-response-codes]]
==== {api-response-codes-title}
`404`::
Search Application `` does not exist.
`409`::
Search Application `` exists and `create` is `true`.
[[put-search-application-example]]
==== {api-examples-title}
The following example creates a new Search Application called `my-app`:
[source,console]
----
PUT _application/search_application/my-app?create
{
"indices": [ "index1", "index2" ],
"template": {
"script": {
"source": {
"query": {
"query_string": {
"query": "{{query_string}}",
"default_field": "{{default_field}}"
}
}
},
"params": {
"query_string": "*",
"default_field": "*"
}
}
}
}
----
// TEST[skip:TBD]
The following example creates or updates an existing Search Application called `my-app`:
[source,console]
----
PUT _application/search_application/my-app
{
"indices": [ "index1", "index2", "index3" ],
"template": {
"script": {
"source": {
"query": {
"query_string": {
"query": "{{query_string}}",
"default_field": "{{default_field}}"
}
}
},
"params": {
"query_string": "*",
"default_field": "*"
}
}
}
}
----
// TEST[skip:TBD]