[[indices-simulate-template]] === Simulate index template API ++++ Simulate template ++++ Returns the index configuration that would be applied by a particular <>. //// [source,console] -------------------------------------------------- PUT _index_template/template_1 { "index_patterns": ["te*", "bar*"], "template": { "settings": { "number_of_shards": 1 }, "mappings": { "_source": { "enabled": false }, "properties": { "host_name": { "type": "keyword" }, "created_at": { "type": "date", "format": "EEE MMM dd HH:mm:ss Z yyyy" } } }, "aliases": { "mydata": { } } }, "priority": 10, "version": 3, "_meta": { "description": "my custom" } } -------------------------------------------------- // TESTSETUP [source,console] -------------------------------------------------- DELETE _index_template/* -------------------------------------------------- // TEARDOWN //// [source,console] -------------------------------------------------- POST /_index_template/_simulate/template_1 -------------------------------------------------- [[simulate-template-api-request]] ==== {api-request-title} `POST /_index_template/_simulate/` [[simulate-template-api-prereqs]] ==== {api-prereq-title} * If the {es} {security-features} are enabled, you must have the `manage_index_templates` or `manage` <> to use this API. [[simulate-template-api-path-params]] ==== {api-path-parms-title} ``:: (Optional, string) Name of the index template to simulate. To test a template configuration before you add it to the cluster, omit this parameter and specify the template configuration in the request body. [[simulate-template-api-query-params]] ==== {api-query-parms-title} //// `cause`:: (Optional, string) The reason for using the specified template for the simulation. //// `create`:: (Optional, Boolean) If `true`, the template passed in the body is only used if no existing templates match the same index patterns. If `false`, the simulation uses the template with the highest priority. Note that the template is not permanently added or updated in either case; it is only used for the simulation. Defaults to `false`. include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=master-timeout] `include_defaults`:: (Optional, Boolean) Functionality in preview:[]. If `true`, return all default settings in the response. Defaults to `false`. [role="child_attributes"] [[simulate-template-api-request-body]] ==== {api-request-body-title} include::{es-ref-dir}/indices/put-index-template.asciidoc[tag=index-template-api-body] [role="child_attributes"] [[simulate-template-api-response-body]] ==== {api-response-body-title} `overlapping`:: (array) Any templates that were superseded by the specified template. + .Properties of `overlapping` [%collapsible%open] ==== `index_patterns`:: (array) Index patterns that the superseded template applies to. `name`:: (string) Name of the superseded template. ==== `template`:: (object) The settings, mappings, and aliases that would be applied to matching indices. + .Properties of `template` [%collapsible%open] ==== `aliases`:: (Optional, object of objects) Aliases for the index. If the index template includes `data_stream`, this parameter is not supported. + include::{es-repo-dir}/indices/create-index.asciidoc[tag=aliases-props] include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=mappings] include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=settings] ==== [[simulate-template-api-example]] ==== {api-examples-title} [[simulate-existing-template-ex]] ===== Simulating an existing template The following example creates and simulates a composed template: [source,console] -------------------------------------------------- PUT /_component_template/ct1 <1> { "template": { "settings": { "index.number_of_shards": 2 } } } PUT /_component_template/ct2 <2> { "template": { "settings": { "index.number_of_replicas": 0 }, "mappings": { "properties": { "@timestamp": { "type": "date" } } } } } PUT /_index_template/final-template <3> { "index_patterns": ["my-index-*"], "composed_of": ["ct1", "ct2"], "priority": 5 } POST /_index_template/_simulate/final-template <4> -------------------------------------------------- <1> Create a component template (`ct1`) that sets the number of shards to 2 <2> Create a component template (`ct2`) that sets the number of replicas to 0 and defines a mapping <3> Create an index template (`final-template`) that uses the component templates <4> Show the configuration applied by the `final-template` The response shows the index settings, mappings, and aliases applied by the `final-template`: [source,console-result] --------------------------------------------------------- { "template" : { "settings" : { "index" : { "number_of_shards" : "2", <1> "number_of_replicas" : "0", <2> "routing" : { "allocation" : { "include" : { "_tier_preference" : "data_content" } } } } }, "mappings" : { <3> "properties" : { "@timestamp" : { "type" : "date" } } }, "aliases" : { } }, "overlapping" : [ ] } --------------------------------------------------------- <1> Number of shards from `ct1` <2> Number of replicas from `ct2` <3> Mappings from `ct1` [[simulate-template-config-ex]] ===== Simulating an arbitrary template configuration To see what settings will be applied by a template before you add it to the cluster, you can pass a template configuration in the request body. The specified template is used for the simulation if it has a higher priority than existing templates. [source,console] -------------------------------------------------- POST /_index_template/_simulate { "index_patterns": ["my-index-*"], "composed_of": ["ct2"], "priority": 10, "template": { "settings": { "index.number_of_replicas": 1 } } } -------------------------------------------------- // TEST[continued] The response shows any overlapping templates with a lower priority. [source,console-result] --------------------------------------------------------- { "template" : { "settings" : { "index" : { "number_of_replicas" : "1", "routing" : { "allocation" : { "include" : { "_tier_preference" : "data_content" } } } } }, "mappings" : { "properties" : { "@timestamp" : { "type" : "date" } } }, "aliases" : { } }, "overlapping" : [ { "name" : "final-template", "index_patterns" : [ "my-index-*" ] } ] } ---------------------------------------------------------