Update field mappings Generally available
All methods and paths for this operation:
Add new fields to an existing data stream or index. You can use the update mapping API to:
- Add a new field to an existing index
- Update mappings for multiple indices in a single request
- Add new properties to an object field
- Enable multi-fields for an existing field
- Update supported mapping parameters
- Change a field's mapping using reindexing
- Rename a field using a field alias
Learn how to use the update mapping API with practical examples in the Update mapping API examples guide.
Required authorization
- Index privileges:
manage
Path parameters
-
A comma-separated list of index names the mapping should be added to (supports wildcards); use
_all
or omit to add the mapping on all indices.
Query parameters
-
If
false
, the request returns an error if any wildcard expression, index alias, or_all
value targets only missing or closed indices. This behavior applies even if the request targets other open indices. -
Type of index that wildcard patterns can match. If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams. Supports comma-separated values, such as
open,hidden
.Supported values include:
all
: Match any data stream or index, including hidden ones.open
: Match open, non-hidden indices. Also matches any non-hidden data stream.closed
: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.hidden
: Match hidden data streams and hidden indices. Must be combined withopen
,closed
, orboth
.none
: Wildcard expressions are not accepted.
Values are
all
,open
,closed
,hidden
, ornone
. -
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.
Values are
-1
or0
. -
Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error.
Values are
-1
or0
. -
If
true
, the mappings are applied only to the current write index for the target.
Body Required
-
Controls whether dynamic date detection is enabled.
-
Values are
strict
,runtime
,true
, orfalse
. -
If date detection is enabled then new string fields are checked against 'dynamic_date_formats' and if the value matches then a new date field is added instead of string.
-
Specify dynamic templates for the mapping.
-
Automatically map strings into numeric data types for all fields.
Default value is
false
. -
Mapping for a field. For new fields, this mapping can include:
- Field name
- Field data type
- Mapping parameters
PUT /my-index-000001/_mapping { "properties": { "user": { "properties": { "name": { "type": "keyword" } } } } }
resp = client.indices.put_mapping( index="my-index-000001", properties={ "user": { "properties": { "name": { "type": "keyword" } } } }, )
const response = await client.indices.putMapping({ index: "my-index-000001", properties: { user: { properties: { name: { type: "keyword", }, }, }, }, });
response = client.indices.put_mapping( index: "my-index-000001", body: { "properties": { "user": { "properties": { "name": { "type": "keyword" } } } } } )
$resp = $client->indices()->putMapping([ "index" => "my-index-000001", "body" => [ "properties" => [ "user" => [ "properties" => [ "name" => [ "type" => "keyword", ], ], ], ], ], ]);
curl -X PUT -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type: application/json" -d '{"properties":{"user":{"properties":{"name":{"type":"keyword"}}}}}' "$ELASTICSEARCH_URL/my-index-000001/_mapping"
client.indices().putMapping(p -> p .index("my-index-000001") .properties("user", pr -> pr .object(o -> o .properties("name", pro -> pro .keyword(k -> k) ) ) ) );
{ "properties": { "user": { "properties": { "name": { "type": "keyword" } } } } }