| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | [[indices-create-index]]== Create IndexThe create index API allows to instantiate an index. Elasticsearchprovides support for multiple indices, including executing operationsacross several indices.[float][[create-index-settings]]=== Index SettingsEach index created can have specific settingsassociated with it.[source,js]--------------------------------------------------PUT twitter{    "settings" : {        "index" : {            "number_of_shards" : 3, <1>            "number_of_replicas" : 2 <2>        }    }}--------------------------------------------------// CONSOLE<1> Default for `number_of_shards` is 5<2> Default for `number_of_replicas` is 1 (ie one replica for each primary shard)The above second curl example shows how an index called `twitter` can becreated with specific settings for it using http://www.yaml.org[YAML].In this case, creating an index with 3 shards, each with 2 replicas. Theindex settings can also be defined with http://www.json.org[JSON]:[source,js]--------------------------------------------------PUT twitter{    "settings" : {        "index" : {            "number_of_shards" : 3,            "number_of_replicas" : 2        }    }}--------------------------------------------------// CONSOLEor more simplified[source,js]--------------------------------------------------PUT twitter{    "settings" : {        "number_of_shards" : 3,        "number_of_replicas" : 2    }}--------------------------------------------------// CONSOLE[NOTE]You do not have to explicitly specify `index` section inside the`settings` section.For more information regarding all the different index level settingsthat can be set when creating an index, please check the<<index-modules,index modules>> section.[float][[mappings]]=== MappingsThe create index API allows to provide a type mapping:[source,js]--------------------------------------------------PUT test{    "settings" : {        "number_of_shards" : 1    },    "mappings" : {        "type1" : {            "properties" : {                "field1" : { "type" : "text" }            }        }    }}--------------------------------------------------// CONSOLE[float][[create-index-aliases]]=== AliasesThe create index API allows also to provide a set of <<indices-aliases,aliases>>:[source,js]--------------------------------------------------PUT test{    "aliases" : {        "alias_1" : {},        "alias_2" : {            "filter" : {                "term" : {"user" : "kimchy" }            },            "routing" : "kimchy"        }    }}--------------------------------------------------// CONSOLE[float][[create-index-wait-for-active-shards]]=== Wait For Active ShardsBy default, index creation will only return a response to the client when the primary copies ofeach shard have been started, or the request times out. The index creation response will indicatewhat happened:[source,js]--------------------------------------------------{    "acknowledged": true,    "shards_acknowledged": true,    "index": "test"}--------------------------------------------------// TESTRESPONSE`acknowledged` indicates whether the index was successfully created in the cluster, while`shards_acknowledged` indicates whether the requisite number of shard copies were started foreach shard in the index before timing out. Note that it is still possible for either`acknowledged` or `shards_acknowledged` to be `false`, but the index creation was successful.These values simply indicate whether the operation completed before the timeout. If`acknowledged` is `false`, then we timed out before the cluster state was updated with thenewly created index, but it probably will be created sometime soon. If `shards_acknowledged`is `false`, then we timed out before the requisite number of shards were started (by defaultjust the primaries), even if the cluster state was successfully updated to reflect the newlycreated index (i.e. `acknowledged=true`).We can change the default of only waiting for the primary shards to start through the indexsetting `index.write.wait_for_active_shards` (note that changing this setting will also affectthe `wait_for_active_shards` value on all subsequent write operations):[source,js]--------------------------------------------------PUT test{    "settings": {        "index.write.wait_for_active_shards": "2"    }}--------------------------------------------------// CONSOLE// TEST[skip:requires two nodes]or through the request parameter `wait_for_active_shards`:[source,js]--------------------------------------------------PUT test?wait_for_active_shards=2--------------------------------------------------// CONSOLE// TEST[skip:requires two nodes]A detailed explanation of `wait_for_active_shards` and its possible values can be found<<index-wait-for-active-shards,here>>.[float]=== Skipping typesTypes are scheduled to be fully removed in Elasticsearch 8.0 and will not appearin requests or responses anymore. You can opt in for this future behaviour bysetting `include_type_name=false` and putting mappings directly under `mappings`in the index creation call.Here is an example:[source,js]--------------------------------------------------PUT test?include_type_name=false{  "mappings": {    "properties": {      "foo": {        "type": "keyword"      }    }  }}--------------------------------------------------// CONSOLE
 |