[[indices-put-mapping]]
=== Put mapping API
++++
Put mapping
++++
Adds new fields to an existing index or changes the search settings of existing
fields.
[source,console]
----
PUT /twitter/_mapping
{
"properties": {
"email": {
"type": "keyword"
}
}
}
----
// TEST[setup:twitter]
NOTE: Before 7.0.0, the 'mappings' definition used to include a type name.
Although specifying types in requests is now deprecated, a type can still be
provided if the request parameter `include_type_name` is set. For more details,
please see <>.
[[put-mapping-api-request]]
==== {api-request-title}
`PUT //_mapping`
`PUT /_mapping`
[[put-mapping-api-path-params]]
==== {api-path-parms-title}
include::{docdir}/rest-api/common-parms.asciidoc[tag=index]
+
To update the mapping of all indices, omit this parameter or use a value of
`_all`.
[[put-mapping-api-query-params]]
==== {api-query-parms-title}
include::{docdir}/rest-api/common-parms.asciidoc[tag=allow-no-indices]
include::{docdir}/rest-api/common-parms.asciidoc[tag=expand-wildcards]
+
Defaults to `open`.
include::{docdir}/rest-api/common-parms.asciidoc[tag=include-type-name]
include::{docdir}/rest-api/common-parms.asciidoc[tag=index-ignore-unavailable]
include::{docdir}/rest-api/common-parms.asciidoc[tag=timeoutparms]
[[put-mapping-api-request-body]]
==== {api-request-body-title}
`properties`::
+
--
(Required, <>) Mapping for a field. For new
fields, this mapping can include:
* Field name
* <>
* <>
For existing fields, see <>.
--
[[put-mapping-api-example]]
==== {api-examples-title}
[[put-field-mapping-api-basic-ex]]
===== Example with index setup
The put mapping API requires an existing index. The following
<> API request creates the `publications`
index with no mapping.
[source,console]
----
PUT /publications
----
The following put mapping API request adds `title`, a new <> field,
to the `publications` index.
[source,console]
----
PUT /publications/_mapping
{
"properties": {
"title": { "type": "text"}
}
}
----
// TEST[continued]
[[put-mapping-api-multi-ex]]
===== Multiple indices
The PUT mapping API can be applied to multiple indices with a single request.
For example, we can update the `twitter-1` and `twitter-2` mappings at the same time:
[source,console]
--------------------------------------------------
# Create the two indices
PUT /twitter-1
PUT /twitter-2
# Update both mappings
PUT /twitter-1,twitter-2/_mapping <1>
{
"properties": {
"user_name": {
"type": "text"
}
}
}
--------------------------------------------------
// TEST[setup:twitter]
<1> Note that the indices specified (`twitter-1,twitter-2`) follows <> and wildcard format.
[[updating-field-mappings]]
===== Update an existing field
// tag::put-field-mapping-exceptions[]
You can't change the mapping of an existing field, with the following
exceptions:
* You can add new <> to an <