Create or update an index template
Index templates define settings, mappings, and aliases that can be applied automatically to new indices. Elasticsearch applies templates to new indices based on an index pattern that matches the index name.
IMPORTANT: This documentation is about legacy index templates, which are deprecated and will be replaced by the composable templates introduced in Elasticsearch 7.8.
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 create index API requests override any settings or mappings specified in an index template.
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.
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. NOTE: Multiple matching templates with the same order value will result in a non-deterministic merging order.
Path parameters
-
name
string Required The name of the template
Query parameters
-
create
boolean If true, this request cannot replace or update existing index templates.
-
master_timeout
string Period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error.
-
order
number Order in which Elasticsearch 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.
-
cause
string
Body
Required
-
aliases
object Aliases for the index.
Hide aliases attribute Show aliases attribute object
-
*
object Additional properties Additional properties are allowed.
Hide * attributes Show * attributes object
-
filter
object An Elasticsearch Query DSL (Domain Specific Language) object that defines a query.
Additional properties are allowed.
-
index_routing
string -
is_hidden
boolean If
true
, the alias is hidden. All indices for the alias must have the sameis_hidden
value. -
is_write_index
boolean If
true
, the index is the write index for the alias. -
routing
string -
search_routing
string
-
-
index_patterns
string | array[string] Array of wildcard expressions used to match the names of indices during creation.
-
mappings
object Additional properties are allowed.
Hide mappings attributes Show mappings attributes object
-
all_field
object Additional properties are allowed.
Hide all_field attributes Show all_field attributes object
-
analyzer
string Required -
enabled
boolean Required -
omit_norms
boolean Required -
search_analyzer
string Required -
similarity
string Required -
store
boolean Required -
store_term_vector_offsets
boolean Required -
store_term_vector_payloads
boolean Required -
store_term_vector_positions
boolean Required -
store_term_vectors
boolean Required
-
-
date_detection
boolean -
dynamic
string Values are
strict
,runtime
,true
, orfalse
. -
dynamic_date_formats
array[string] -
dynamic_templates
array[object] -
_field_names
object Additional properties are allowed.
Hide _field_names attribute Show _field_names attribute object
-
enabled
boolean Required
-
-
index_field
object Additional properties are allowed.
Hide index_field attribute Show index_field attribute object
-
enabled
boolean Required
-
-
_meta
object Hide _meta attribute Show _meta attribute object
-
*
object Additional properties Additional properties are allowed.
-
-
numeric_detection
boolean -
properties
object -
_routing
object Additional properties are allowed.
Hide _routing attribute Show _routing attribute object
-
required
boolean Required
-
-
_size
object Additional properties are allowed.
Hide _size attribute Show _size attribute object
-
enabled
boolean Required
-
-
_source
object Additional properties are allowed.
-
runtime
object Hide runtime attribute Show runtime attribute object
-
*
object Additional properties Additional properties are allowed.
Hide * attributes Show * attributes object
-
fields
object For type
composite
-
fetch_fields
array[object] For type
lookup
-
format
string A custom format for
date
type runtime fields. -
input_field
string Path to field or array of paths. Some API's support wildcards in the path to select multiple fields.
-
target_field
string Path to field or array of paths. Some API's support wildcards in the path to select multiple fields.
-
target_index
string -
script
object Additional properties are allowed.
Hide script attributes Show script attributes object
-
source
string The script source.
-
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 Additional properties are allowed.
-
-
options
object Hide options attribute Show options attribute object
-
*
string Additional properties
-
-
-
type
string Required Values are
boolean
,composite
,date
,double
,geo_point
,ip
,keyword
,long
, orlookup
.
-
-
-
enabled
boolean -
subobjects
boolean -
_data_stream_timestamp
object Additional properties are allowed.
Hide _data_stream_timestamp attribute Show _data_stream_timestamp attribute object
-
enabled
boolean Required
-
-
-
order
number Order in which Elasticsearch 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.
-
settings
object Additional properties Additional properties are allowed.
Hide settings attributes Show settings attributes object
-
index
object Additional properties Additional properties are allowed.
-
mode
string routing_path
string | array[string] -
soft_deletes
object Additional properties are allowed.
Hide soft_deletes attributes Show soft_deletes attributes object
-
enabled
boolean Indicates whether soft deletes are enabled on the index.
-
retention_lease
object Additional properties are allowed.
Hide retention_lease attribute Show retention_lease attribute object
-
period
string Required A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
-
-
-
sort
object Additional properties are allowed.
Hide sort attributes Show sort attributes object
-
field
string | array[string]
-
number_of_shards
number | string number_of_replicas
number | string -
number_of_routing_shards
number -
check_on_startup
string Values are
true
,false
, orchecksum
. -
codec
string routing_partition_size
number | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
hidden
boolean | string auto_expand_replicas
string | null One of: A
null
value that is to be interpreted as an actual value, unless other uses ofnull
that are equivalent to a missing value. It is used for exemple in settings, where using theNullValue
for a setting will reset it to its default value.-
merge
object Additional properties are allowed.
Hide merge attribute Show merge attribute object
-
scheduler
object Additional properties are allowed.
Hide scheduler attributes Show scheduler attributes object
max_thread_count
number | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
max_merge_count
number | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
-
-
search
object Additional properties are allowed.
Hide search attributes Show search attributes object
-
idle
object Additional properties are allowed.
Hide idle attribute Show idle attribute object
-
after
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
-
-
slowlog
object Additional properties are allowed.
Hide slowlog attributes Show slowlog attributes object
-
level
string -
source
number -
reformat
boolean -
threshold
object Additional properties are allowed.
Hide threshold attributes Show threshold attributes object
-
query
object Additional properties are allowed.
Hide query attributes Show query attributes object
-
warn
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
info
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
debug
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
trace
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
-
-
fetch
object Additional properties are allowed.
Hide fetch attributes Show fetch attributes object
-
warn
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
info
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
debug
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
trace
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
-
-
-
-
-
refresh_interval
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
max_result_window
number -
max_inner_result_window
number -
max_rescore_window
number -
max_docvalue_fields_search
number -
max_script_fields
number -
max_ngram_diff
number -
max_shingle_diff
number -
blocks
object Additional properties are allowed.
Hide blocks attributes Show blocks attributes object
read_only
boolean | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
read_only_allow_delete
boolean | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
read
boolean | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
write
boolean | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
metadata
boolean | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
-
max_refresh_listeners
number -
analyze
object Additional properties are allowed.
Hide analyze attribute Show analyze attribute object
max_token_count
number | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
-
highlight
object Additional properties are allowed.
Hide highlight attribute Show highlight attribute object
-
max_analyzed_offset
number
-
-
max_terms_count
number -
max_regex_length
number -
routing
object Additional properties are allowed.
Hide routing attributes Show routing attributes object
-
allocation
object Additional properties are allowed.
Hide allocation attributes Show allocation attributes object
-
enable
string Values are
all
,primaries
,new_primaries
, ornone
. -
include
object Additional properties are allowed.
Hide include attributes Show include attributes object
-
_tier_preference
string -
_id
string
-
-
initial_recovery
object Additional properties are allowed.
Hide initial_recovery attribute Show initial_recovery attribute object
-
_id
string
-
-
disk
object Additional properties are allowed.
Hide disk attribute Show disk attribute object
threshold_enabled
boolean | string
-
-
rebalance
object Additional properties are allowed.
Hide rebalance attribute Show rebalance attribute object
-
enable
string Required Values are
all
,primaries
,replicas
, ornone
.
-
-
-
gc_deletes
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
default_pipeline
string -
final_pipeline
string -
lifecycle
object Additional properties are allowed.
Hide lifecycle attributes Show lifecycle attributes object
-
name
string indexing_complete
boolean | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
-
origination_date
number If specified, this is the timestamp used to calculate the index age for its phase transitions. Use this setting if you create a new index that contains old data and want to use the original creation date to calculate the index age. Specified as a Unix epoch value in milliseconds.
-
parse_origination_date
boolean Set to true to parse the origination date from the index name. This origination date is used to calculate the index age for its phase transitions. The index name must match the pattern .*-{date_format}-\d+, where the date_format is yyyy.MM.dd and the trailing digits are optional. An index that was rolled over would normally match the full format, for example logs-2016.10.31-000002). If the index name doesn’t match the pattern, index creation fails.
-
step
object Additional properties are allowed.
Hide step attribute Show step attribute object
-
wait_time_threshold
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
-
-
rollover_alias
string The index alias to update when the index rolls over. Specify when using a policy that contains a rollover action. When the index rolls over, the alias is updated to reflect that the index is no longer the write index. For more information about rolling indices, see Rollover.
prefer_ilm
boolean | string Preference for the system that manages a data stream backing index (preferring ILM when both ILM and DLM are applicable for an index).
-
-
provided_name
string creation_date
number | string Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
One of: Time unit for milliseconds
creation_date_string
string | number A date and time, either as a string whose format can depend on the context (defaulting to ISO 8601), or a number of milliseconds since the Epoch. Elasticsearch accepts both as input, but will generally output a string representation.
One of: Time unit for milliseconds
-
uuid
string -
version
object Additional properties are allowed.
Hide version attributes Show version attributes object
-
created
string -
created_string
string
-
verified_before_close
boolean | string format
string | number -
max_slices_per_scroll
number -
translog
object Additional properties are allowed.
Hide translog attributes Show translog attributes object
-
sync_interval
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
durability
string Values are
request
,REQUEST
,async
, orASYNC
. flush_threshold_size
number | string -
retention
object Additional properties are allowed.
Hide retention attributes Show retention attributes object
-
-
query_string
object Additional properties are allowed.
Hide query_string attribute Show query_string attribute object
lenient
boolean | string Required Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior is used to capture this behavior while keeping the semantics of the field type.
Depending on the target language, code generators can keep the union or remove it and leniently parse strings to the target type.
priority
number | string -
top_metrics_max_size
number -
analysis
object Additional properties are allowed.
Hide analysis attributes Show analysis attributes object
-
analyzer
object -
char_filter
object -
filter
object -
normalizer
object -
tokenizer
object
-
-
settings
object Additional properties Additional properties are allowed.
-
time_series
object Additional properties are allowed.
Hide time_series attributes Show time_series attributes object
start_time
string | number A date and time, either as a string whose format can depend on the context (defaulting to ISO 8601), or a number of milliseconds since the Epoch. Elasticsearch accepts both as input, but will generally output a string representation.
One of: Time unit for milliseconds
-
queries
object Additional properties are allowed.
-
similarity
object Configure custom similarity settings to customize how search results are scored.
-
mapping
object Additional properties are allowed.
Hide mapping attributes Show mapping attributes object
-
coerce
boolean -
total_fields
object Additional properties are allowed.
Hide total_fields attributes Show total_fields attributes object
limit
number | string The maximum number of fields in an index. Field and object mappings, as well as field aliases count towards this limit. The limit is in place to prevent mappings and searches from becoming too large. Higher values can lead to performance degradations and memory issues, especially in clusters with a high load or few resources.
ignore_dynamic_beyond_limit
boolean | string This setting determines what happens when a dynamically mapped field would exceed the total fields limit. When set to false (the default), the index request of the document that tries to add a dynamic field to the mapping will fail with the message Limit of total fields [X] has been exceeded. When set to true, the index request will not fail. Instead, fields that would exceed the limit are not added to the mapping, similar to dynamic: false. The fields that were not added to the mapping will be added to the _ignored field.
-
depth
object Additional properties are allowed.
Hide depth attribute Show depth attribute object
-
limit
number The maximum depth for a field, which is measured as the number of inner objects. For instance, if all fields are defined at the root object level, then the depth is 1. If there is one object mapping, then the depth is 2, etc.
-
-
nested_fields
object Additional properties are allowed.
Hide nested_fields attribute Show nested_fields attribute object
-
limit
number The maximum number of distinct nested mappings in an index. The nested type should only be used in special cases, when arrays of objects need to be queried independently of each other. To safeguard against poorly designed mappings, this setting limits the number of unique nested types per index.
-
-
nested_objects
object Additional properties are allowed.
Hide nested_objects attribute Show nested_objects attribute object
-
limit
number The maximum number of nested JSON objects that a single document can contain across all nested types. This limit helps to prevent out of memory errors when a document contains too many nested objects.
-
-
field_name_length
object Additional properties are allowed.
Hide field_name_length attribute Show field_name_length attribute object
-
limit
number Setting for the maximum length of a field name. This setting isn’t really something that addresses mappings explosion but might still be useful if you want to limit the field length. It usually shouldn’t be necessary to set this setting. The default is okay unless a user starts to add a huge number of fields with really long names. Default is
Long.MAX_VALUE
(no limit).
-
-
dimension_fields
object Additional properties are allowed.
Hide dimension_fields attribute Show dimension_fields attribute object
-
limit
number [preview] This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.
-
-
source
object Additional properties are allowed.
Hide source attribute Show source attribute object
-
mode
string Required Values are
disabled
,stored
, orsynthetic
.
-
ignore_malformed
boolean | string
-
-
indexing.slowlog
object Additional properties are allowed.
Hide indexing.slowlog attributes Show indexing.slowlog attributes object
-
level
string -
source
number -
reformat
boolean -
threshold
object Additional properties are allowed.
Hide threshold attribute Show threshold attribute object
-
index
object Additional properties are allowed.
Hide index attributes Show index attributes object
-
warn
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
info
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
debug
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value. -
trace
string A duration. Units can be
nanos
,micros
,ms
(milliseconds),s
(seconds),m
(minutes),h
(hours) andd
(days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
-
-
-
-
indexing_pressure
object Additional properties are allowed.
Hide indexing_pressure attribute Show indexing_pressure attribute object
-
memory
object Required Additional properties are allowed.
Hide memory attribute Show memory attribute object
-
limit
number Number of outstanding bytes that may be consumed by indexing requests. When this limit is reached or exceeded, the node will reject new coordinating and primary operations. When replica operations consume 1.5x this limit, the node will reject new replica operations. Defaults to 10% of the heap.
-
-
-
store
object Additional properties are allowed.
Hide store attributes Show store attributes object
-
allow_mmap
boolean You can restrict the use of the mmapfs and the related hybridfs store type via the setting node.store.allow_mmap. This is a boolean setting indicating whether or not memory-mapping is allowed. The default is to allow it. This setting is useful, for example, if you are in an environment where you can not control the ability to create a lot of memory maps so you need disable the ability to use memory-mapping.
-
-
version
number
Responses
-
200 application/json
Hide response attribute Show response attribute object
-
acknowledged
boolean Required For a successful response, this value is always true. On failure, an exception is returned instead.
-
curl \
--request PUT http://api.example.com/_template/{name} \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '{"mappings":{"_source":{"enabled":false}},"settings":{"number_of_shards":1},"properties":{"host_name":{"type":"keyword"},"created_at":{"type":"date","format":"EEE MMM dd HH:mm:ss Z yyyy"}},"index_patterns":["te*","bar*"]}'
{
"mappings": {
"_source": {
"enabled": false
}
},
"settings": {
"number_of_shards": 1
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z yyyy"
}
},
"index_patterns": [
"te*",
"bar*"
]
}
{
"acknowledged": true
}