123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- [[indices-templates-v1]]
- === Create or update index template API
- ++++
- <titleabbrev>Create or update index template (legacy)</titleabbrev>
- ++++
- IMPORTANT: This documentation is about legacy index templates,
- which are deprecated and will be replaced by the composable templates introduced in {es} 7.8.
- For information about composable templates, see <<index-templates>>.
- Creates or updates an index template.
- [source,console]
- --------------------------------------------------
- PUT _template/template_1
- {
- "index_patterns": ["te*", "bar*"],
- "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"
- }
- }
- }
- }
- --------------------------------------------------
- // TESTSETUP
- //////////////////////////
- [source,console]
- --------------------------------------------------
- DELETE _template/template_*
- --------------------------------------------------
- // TEARDOWN
- //////////////////////////
- [[put-index-template-v1-api-request]]
- ==== {api-request-title}
- `PUT /_template/<index-template>`
- [[put-index-template-v1-api-prereqs]]
- ==== {api-prereq-title}
- * If the {es} {security-features} are enabled, you must have the
- `manage_index_templates` or `manage` <<privileges-list-cluster,cluster
- privilege>> to use this API.
- [[put-index-template-v1-api-desc]]
- ==== {api-description-title}
- Index templates define <<index-modules-settings,settings>> and <<mapping,mappings>>
- that you can automatically apply when creating new indices.
- {es} applies templates to new indices
- based on an index pattern that matches the index name.
- NOTE: Composable templates always take precedence over legacy templates.
- If no composable template matches a new index,
- matching legacy templates are applied according to their order.
- Index templates are only applied during index creation.
- Changes to index templates do not affect existing indices.
- Settings and mappings specified in <<indices-create-index, create index>> API requests
- override any settings or mappings specified in an index template.
- ===== Comments in index templates
- You can use C-style /* */ block comments in index templates.
- You can include comments anywhere in the request body,
- except before the opening curly bracket.
- [[getting-v1]]
- ===== Getting templates
- See <<indices-get-template-v1>>.
- [[put-index-template-v1-api-path-params]]
- ==== {api-path-parms-title}
- `<index-template>`::
- (Required, string)
- Name of the index template to create.
- [[put-index-template-v1-api-query-params]]
- ==== {api-query-parms-title}
- `create`::
- (Optional, Boolean)
- If `true`, this request cannot replace or update existing index templates.
- Defaults to `false`.
- `order`::
- (Optional,integer)
- Order in which {es} applies this template
- if index matches multiple templates.
- +
- Templates with lower `order` values are merged first.
- Templates with higher `order` values are merged later,
- overriding templates with lower values.
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=master-timeout]
- [[put-index-template-v1-api-request-body]]
- ==== {api-request-body-title}
- `index_patterns`::
- (Required, array of strings)
- Array of wildcard expressions
- used to match the names of indices during creation.
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=aliases]
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=mappings]
- include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=settings]
- `version`::
- (Optional, integer)
- Version number used to manage index templates externally.
- This number is not automatically generated by {es}.
- [[put-index-template-v1-api-example]]
- ==== {api-examples-title}
- ===== Index template with index aliases
- You can include <<alias,index aliases>> in an index template.
- [source,console]
- --------------------------------------------------
- PUT _template/template_1
- {
- "index_patterns" : ["te*"],
- "settings" : {
- "number_of_shards" : 1
- },
- "aliases" : {
- "alias1" : {},
- "alias2" : {
- "filter" : {
- "term" : {"user.id" : "kimchy" }
- },
- "routing" : "shard-1"
- },
- "{index}-alias" : {} <1>
- }
- }
- --------------------------------------------------
- <1> the `{index}` placeholder in the alias name will be replaced with the
- actual index name that the template gets applied to, during index creation.
- [[multiple-templates-v1]]
- ===== Indices matching multiple templates
- Multiple index templates can potentially match an index, in this case,
- both the settings and mappings are merged into the final configuration
- of the index. The order of the merging can be controlled using the
- `order` parameter, with lower order being applied first, and higher
- orders overriding them. For example:
- [source,console]
- --------------------------------------------------
- PUT /_template/template_1
- {
- "index_patterns" : ["te*"],
- "order" : 0,
- "settings" : {
- "number_of_shards" : 1
- },
- "mappings" : {
- "_source" : { "enabled" : false }
- }
- }
- PUT /_template/template_2
- {
- "index_patterns" : ["tes*"],
- "order" : 1,
- "settings" : {
- "number_of_shards" : 1
- },
- "mappings" : {
- "_source" : { "enabled" : true }
- }
- }
- --------------------------------------------------
- The above will disable storing the `_source`, but
- for indices that start with `tes*`, `_source` will still be enabled.
- Note, for mappings, the merging is "deep", meaning that specific
- object/property based mappings can easily be added/overridden on higher
- order templates, with lower order templates providing the basis.
- NOTE: Multiple matching templates with the same order value will
- result in a non-deterministic merging order.
- [[versioning-templates-v1]]
- ===== Template versioning
- You can use the `version` parameter
- to add an optional version number to an index template.
- External systems can use these version numbers
- to simplify template management.
- The `version` parameter is completely optional
- and not automatically generated by {es}.
- To unset a `version`,
- replace the template without specifying one.
- [source,console]
- --------------------------------------------------
- PUT /_template/template_1
- {
- "index_patterns" : ["my-index-*"],
- "order" : 0,
- "settings" : {
- "number_of_shards" : 1
- },
- "version": 123
- }
- --------------------------------------------------
- To check the `version`,
- you can use the <<indices-get-template, get index template>> API
- with the <<common-options-response-filtering, `filter_path`>> query parameter
- to return only the version number:
- [source,console]
- --------------------------------------------------
- GET /_template/template_1?filter_path=*.version
- --------------------------------------------------
- // TEST[continued]
- The API returns the following response:
- [source,console-result]
- --------------------------------------------------
- {
- "template_1" : {
- "version" : 123
- }
- }
- --------------------------------------------------
|