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.
Path parameters
-
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
-
Additional properties are allowed.
Hide * attributes Show * attributes object
-
filter object
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
-
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
-
index_field object
Additional properties are allowed.
Hide index_field attribute Show index_field attribute object
-
_meta object
Hide _meta attribute Show _meta attribute object
-
Additional properties are allowed.
-
-
numeric_detection boolean
-
properties object
-
_routing object
Additional properties are allowed.
Hide _routing attribute Show _routing attribute object
-
_size object
Additional properties are allowed.
Hide _size attribute Show _size attribute object
-
_source object
Additional properties are allowed.
-
runtime object
Hide runtime attribute Show runtime attribute object
-
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
-
Additional properties are allowed.
-
-
options object
Hide options attribute Show options attribute object
-
-
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
-
-
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 are allowed.
Hide settings attributes Show settings attributes object
-
index object
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
-
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
-
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
-
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.
-
-
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 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.
-
-
ignore_malformed boolean
-
-
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
-
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
curl \
-X POST http://api.example.com/_template/{name} \
-H "Content-Type: application/json" \
-d '{"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
}