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.

  • 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"
      ]
    }
  }
}