---
type: api
title: Create or update a search application
description: ## Required authorization
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch-serverless/operation/operation-search-application-put
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch-serverless/operation/operation-search-application-put
products:
  - Elasticsearch Serverless
---

# Create or update a search application

Availability:

## Paths

- `PUT` `/_application/search_application/{name}`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch-serverless/authentication#apikeyauth)

#### Path Parameters

- `name` (string Name)
  The name of the search application to be created or updated.

## Description



## Required authorization

* Index privileges: `manage`
* Cluster privileges: `manage_search_application`

## Query String Parameters

- `create` (boolean · default: false)
  If `true`, this request cannot replace or update existing Search Applications.

## Request Body

`application/json`

- `indices` ([] string IndexName) — required
  Indices that are part of the Search Application.
- `analytics_collection_name` (string Name) — optional
  Analytics collection associated to the Search Application.
- `template` ({} SearchApplicationTemplate) — optional
  Search template to use on search operations.
  - `script` (string Script) — required
    The associated mustache template.

## Response

`application/json`

- `result` (enum Result)
  Values: `created`, `updated`, `deleted`, `not_found`, `noop`
## Code Examples

#### Console

```console
PUT _application/search_application/my-app
{
  "indices": [ "index1", "index2" ],
  "template": {
    "script": {
      "source": {
        "query": {
          "query_string": {
            "query": "{{query_string}}",
            "default_field": "{{default_field}}"
          }
        }
      },
      "params": {
        "query_string": "*",
        "default_field": "*"
      }
    },
    "dictionary": {
      "properties": {
        "query_string": {
          "type": "string"
        },
        "default_field": {
          "type": "string",
          "enum": [
            "title",
            "description"
          ]
        },
        "additionalProperties": false
      },
      "required": [
        "query_string"
      ]
    }
  }
}
```

#### JavaScript

```javascript
const response = await client.searchApplication.put({
  name: "my-app",
  search_application: {
    indices: ["index1", "index2"],
    template: {
      script: {
        source: {
          query: {
            query_string: {
              query: "{{query_string}}",
              default_field: "{{default_field}}",
            },
          },
        },
        params: {
          query_string: "*",
          default_field: "*",
        },
      },
      dictionary: {
        properties: {
          query_string: {
            type: "string",
          },
          default_field: {
            type: "string",
            enum: ["title", "description"],
          },
          additionalProperties: false,
        },
        required: ["query_string"],
      },
    },
  },
});
```

#### Python

```python
resp = client.search_application.put(
    name="my-app",
    search_application={
        "indices": [
            "index1",
            "index2"
        ],
        "template": {
            "script": {
                "source": {
                    "query": {
                        "query_string": {
                            "query": "{{query_string}}",
                            "default_field": "{{default_field}}"
                        }
                    }
                },
                "params": {
                    "query_string": "*",
                    "default_field": "*"
                }
            },
            "dictionary": {
                "properties": {
                    "query_string": {
                        "type": "string"
                    },
                    "default_field": {
                        "type": "string",
                        "enum": [
                            "title",
                            "description"
                        ]
                    },
                    "additionalProperties": False
                },
                "required": [
                    "query_string"
                ]
            }
        }
    },
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/_application/search_application/my-app" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "indices": [
      "index1",
      "index2"
    ],
    "template": {
      "script": {
        "source": {
          "query": {
            "query_string": {
              "query": "{{query_string}}",
              "default_field": "{{default_field}}"
            }
          }
        },
        "params": {
          "query_string": "*",
          "default_field": "*"
        }
      },
      "dictionary": {
        "properties": {
          "query_string": {
            "type": "string"
          },
          "default_field": {
            "type": "string",
            "enum": [
              "title",
              "description"
            ]
          },
          "additionalProperties": false
        },
        "required": [
          "query_string"
        ]
      }
    }
  }'
```

#### Java

```java
client.searchApplication().put(p -> p
    .name("my-app")
    .searchApplication(s -> s
        .indices(List.of("index1","index2"))
        .template(t -> t
            .script(sc -> sc
                .source(so -> so
                    .scriptTemplate(scr -> scr
                        .query(q -> q
                            .queryString(qu -> qu
                                .defaultField("{{default_field}}")
                                .query("""
                                    {{query_string}}
                                    """)
                            )
                        )
                    )
                )
                .params(Map.of("default_field", JsonData.fromJson("\"*\""),"query_string", JsonData.fromJson("\"*\"")))
            )
        )
    )
);
```

#### PHP

```php
$resp = $client->searchApplication()->put([
    "name" => "my-app",
    "body" => [
        "indices" => array(
            "index1",
            "index2",
        ),
        "template" => [
            "script" => [
                "source" => [
                    "query" => [
                        "query_string" => [
                            "query" => "{{query_string}}",
                            "default_field" => "{{default_field}}",
                        ],
                    ],
                ],
                "params" => [
                    "query_string" => "*",
                    "default_field" => "*",
                ],
            ],
            "dictionary" => [
                "properties" => [
                    "query_string" => [
                        "type" => "string",
                    ],
                    "default_field" => [
                        "type" => "string",
                        "enum" => array(
                            "title",
                            "description",
                        ),
                    ],
                    "additionalProperties" => false,
                ],
                "required" => array(
                    "query_string",
                ),
            ],
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.search_application.put(
  name: "my-app",
  body: {
    "indices": [
      "index1",
      "index2"
    ],
    "template": {
      "script": {
        "source": {
          "query": {
            "query_string": {
              "query": "{{query_string}}",
              "default_field": "{{default_field}}"
            }
          }
        },
        "params": {
          "query_string": "*",
          "default_field": "*"
        }
      },
      "dictionary": {
        "properties": {
          "query_string": {
            "type": "string"
          },
          "default_field": {
            "type": "string",
            "enum": [
              "title",
              "description"
            ]
          },
          "additionalProperties": false
        },
        "required": [
          "query_string"
        ]
      }
    }
  }
)
```

