Create or update a search application Beta; Added in 8.8.0

PUT /_application/search_application/{name}

Required authorization

  • Index privileges: manage
  • Cluster privileges: manage_search_application

Path parameters

  • name string Required

    The name of the search application to be created or updated.

Query parameters

  • create boolean

    If true, this request cannot replace or update existing Search Applications.

application/json

Body Required

  • indices array[string] Required

    Indices that are part of the Search Application.

  • analytics_collection_name string
  • template object
    Hide template attribute Show template attribute object
    • script object Required
      Hide script attributes Show script attributes object
      • source string | object

        One of:
      • id string
      • params object

        Specifies any named parameters that are passed into the script as variables. Use parameters instead of hard-coded values to decrease compile time.

        Hide params attribute Show params attribute object
        • * object Additional properties
      • lang string

        Any of:

        Values are painless, expression, mustache, or java.

      • options object
        Hide options attribute Show options attribute object
        • * string Additional properties

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
    • result string Required

      Values are created, updated, deleted, not_found, or noop.

PUT /_application/search_application/{name}
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" ] } } }
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" ] } } }, )
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"], }, }, }, });
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" ] } } } )
$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", ), ], ], ], ]);
curl -X PUT -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"]}}}' "$ELASTICSEARCH_URL/_application/search_application/my-app"
Request example
Run `PUT _application/search_application/my-app` to create or update a search application called `my-app`. When the dictionary parameter is specified, the search application search API will perform the following parameter validation: it accepts only the `query_string` and `default_field` parameters; it verifies that `query_string` and `default_field` are both strings; it accepts `default_field` only if it takes the values title or description. If the parameters are not valid, the search application search API will return an error.
{ "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" ] } } }