Create an index
You can use the create index API to add a new index to an Elasticsearch cluster. When creating an index, you can specify the following:
- Settings for the index.
- Mappings for fields in the index.
- Index aliases
Wait for active shards
By default, index creation will only return a response to the client when the primary copies of each shard have been started, or the request times out.
The index creation response will indicate what happened.
For example, acknowledged
indicates whether the index was successfully created in the cluster, while shards_acknowledged
indicates whether the requisite number of shard copies were started for each shard in the index before timing out.
Note that it is still possible for either acknowledged
or shards_acknowledged
to be false
, but for the index creation to be successful.
These values simply indicate whether the operation completed before the timeout.
If acknowledged
is false, the request timed out before the cluster state was updated with the newly created index, but it probably will be created sometime soon.
If shards_acknowledged
is false, then the request timed out before the requisite number of shards were started (by default just the primaries), even if the cluster state was successfully updated to reflect the newly created index (that is to say, acknowledged
is true
).
You can change the default of only waiting for the primary shards to start through the index setting index.write.wait_for_active_shards
.
Note that changing this setting will also affect the wait_for_active_shards
value on all subsequent write operations.
Path parameters
-
index
string Required Name of the index you wish to create.
Query parameters
-
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.
-
timeout
string Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.
-
wait_for_active_shards
number | string The number of shard copies that must be active before proceeding with the operation. Set to
all
or any positive integer up to the total number of shards in the index (number_of_replicas+1
).
Body
-
aliases
object Aliases for the index.
Hide aliases attribute Show aliases attribute object
-
*
object Additional properties Hide * attributes Show * attributes object
-
filter
object An Elasticsearch Query DSL (Domain Specific Language) object that defines a query.
-
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
-
-
-
mappings
object Hide mappings attributes Show mappings attributes object
-
all_field
object 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 Hide _field_names attribute Show _field_names attribute object
-
enabled
boolean Required
-
-
index_field
object Hide index_field attribute Show index_field attribute object
-
enabled
boolean Required
-
-
_meta
object Hide _meta attribute Show _meta attribute object
-
*
object Additional properties
-
-
numeric_detection
boolean -
properties
object -
_routing
object Hide _routing attribute Show _routing attribute object
-
required
boolean Required
-
-
_size
object Hide _size attribute Show _size attribute object
-
enabled
boolean Required
-
-
_source
object -
runtime
object Hide runtime attribute Show runtime attribute object
-
*
object Additional properties 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 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
-
-
options
object Hide options attribute Show options attribute object
-
*
string Additional properties
-
-
-
type
string Required Values are
boolean
,composite
,date
,double
,geo_point
,geo_shape
,ip
,keyword
,long
, orlookup
.
-
-
-
enabled
boolean -
subobjects
boolean -
_data_stream_timestamp
object Hide _data_stream_timestamp attribute Show _data_stream_timestamp attribute object
-
enabled
boolean Required
-
-
-
settings
object Additional properties Hide settings attributes Show settings attributes object
-
index
object Additional properties -
mode
string routing_path
string | array[string] -
soft_deletes
object Hide soft_deletes attributes Show soft_deletes attributes object
-
enabled
boolean Indicates whether soft deletes are enabled on the index.
-
retention_lease
object 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 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 Hide merge attribute Show merge attribute object
-
scheduler
object 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 Hide search attributes Show search attributes object
-
idle
object 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 Hide slowlog attributes Show slowlog attributes object
-
level
string -
source
number -
reformat
boolean -
threshold
object Hide threshold attributes Show threshold attributes object
-
query
object 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 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 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 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 Hide highlight attribute Show highlight attribute object
-
max_analyzed_offset
number
-
-
max_terms_count
number -
max_regex_length
number -
routing
object Hide routing attributes Show routing attributes object
-
allocation
object Hide allocation attributes Show allocation attributes object
-
enable
string Values are
all
,primaries
,new_primaries
, ornone
. -
include
object Hide include attributes Show include attributes object
-
_tier_preference
string -
_id
string
-
-
initial_recovery
object Hide initial_recovery attribute Show initial_recovery attribute object
-
_id
string
-
-
disk
object Hide disk attribute Show disk attribute object
threshold_enabled
boolean | string
-
-
rebalance
object 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 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 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 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 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 Hide retention attributes Show retention attributes object
-
-
query_string
object 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 Hide analysis attributes Show analysis attributes object
-
analyzer
object -
char_filter
object -
filter
object -
normalizer
object -
tokenizer
object
-
-
settings
object Additional properties -
time_series
object 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 -
similarity
object Configure custom similarity settings to customize how search results are scored.
-
mapping
object Hide mapping attributes Show mapping attributes object
-
coerce
boolean -
total_fields
object 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 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 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 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 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 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 Hide source attribute Show source attribute object
-
mode
string Required Values are
disabled
,stored
, orsynthetic
.
-
ignore_malformed
boolean | string
-
-
indexing.slowlog
object Hide indexing.slowlog attributes Show indexing.slowlog attributes object
-
level
string -
source
number -
reformat
boolean -
threshold
object Hide threshold attribute Show threshold attribute object
-
index
object 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 Hide indexing_pressure attribute Show indexing_pressure attribute object
-
memory
object Required 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 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.
-
Responses
-
200 application/json
Hide response attributes Show response attributes object
-
index
string Required -
shards_acknowledged
boolean Required -
acknowledged
boolean Required
-
curl \
--request PUT http://api.example.com/{index} \
--header "Authorization: $API_KEY" \
--header "Content-Type: application/json" \
--data '"{\n \"settings\": {\n \"number_of_shards\": 3,\n \"number_of_replicas\": 2\n }\n}"'
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"field1": { "type": "text" }
}
}
}
{
"index": "string",
"shards_acknowledged": true,
"acknowledged": true
}