2013-08-28 19:24:34 -04:00
|
|
|
[[indices-put-mapping]]
|
2019-08-23 08:13:27 -04:00
|
|
|
=== Put mapping API
|
|
|
|
++++
|
|
|
|
<titleabbrev>Put mapping</titleabbrev>
|
|
|
|
++++
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2019-08-23 08:13:27 -04:00
|
|
|
Adds new fields to an existing index or changes the search settings of existing
|
|
|
|
fields.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
2019-08-23 08:13:27 -04:00
|
|
|
----
|
|
|
|
PUT /twitter/_mapping
|
2015-08-12 15:21:37 -04:00
|
|
|
{
|
|
|
|
"properties": {
|
2017-07-05 06:30:19 -04:00
|
|
|
"email": {
|
|
|
|
"type": "keyword"
|
2015-08-12 15:21:37 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-08-23 08:13:27 -04:00
|
|
|
----
|
|
|
|
// CONSOLE
|
|
|
|
// 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 <<removal-of-types>>.
|
|
|
|
|
|
|
|
|
|
|
|
[[put-mapping-api-request]]
|
|
|
|
==== {api-request-title}
|
|
|
|
|
|
|
|
`PUT /{index}/_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,mapping object>>) Mapping for a field. For new
|
|
|
|
fields, this mapping can include:
|
|
|
|
|
|
|
|
* Field name
|
|
|
|
* <<field-datatypes,Field datatype>>
|
|
|
|
* <<mapping-params,Mapping parameters>>
|
|
|
|
|
|
|
|
For existing fields, see <<updating-field-mappings>>.
|
|
|
|
--
|
|
|
|
|
|
|
|
|
|
|
|
[[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
|
|
|
|
<<indices-create-index, create index>> API request creates the `publications`
|
|
|
|
index with no mapping.
|
|
|
|
|
|
|
|
[source,js]
|
|
|
|
----
|
|
|
|
PUT /publications
|
|
|
|
----
|
2016-05-09 09:42:23 -04:00
|
|
|
// CONSOLE
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2019-08-23 08:13:27 -04:00
|
|
|
The following put mapping API request adds `title`, a new <<text,`text`>> field,
|
|
|
|
to the `publications` index.
|
2019-01-14 16:08:01 -05:00
|
|
|
|
2019-08-23 08:13:27 -04:00
|
|
|
[source,js]
|
|
|
|
----
|
|
|
|
PUT /publications/_mapping
|
|
|
|
{
|
|
|
|
"properties": {
|
|
|
|
"title": { "type": "text"}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
----
|
|
|
|
// CONSOLE
|
|
|
|
// TEST[continued]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2019-08-23 08:13:27 -04:00
|
|
|
[[put-mapping-api-multi-ex]]
|
|
|
|
===== Multiple indices
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2015-08-12 15:21:37 -04:00
|
|
|
The PUT mapping API can be applied to multiple indices with a single request.
|
2017-05-01 13:56:39 -04:00
|
|
|
For example, we can update the `twitter-1` and `twitter-2` mappings at the same time:
|
2015-08-12 15:21:37 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2017-05-01 13:56:39 -04:00
|
|
|
# Create the two indices
|
2019-08-23 08:13:27 -04:00
|
|
|
PUT /twitter-1
|
|
|
|
PUT /twitter-2
|
2015-08-12 15:21:37 -04:00
|
|
|
|
2017-05-01 13:56:39 -04:00
|
|
|
# Update both mappings
|
2019-01-14 16:08:01 -05:00
|
|
|
PUT /twitter-1,twitter-2/_mapping <1>
|
2017-05-01 13:56:39 -04:00
|
|
|
{
|
|
|
|
"properties": {
|
|
|
|
"user_name": {
|
|
|
|
"type": "text"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--------------------------------------------------
|
|
|
|
// CONSOLE
|
2019-08-23 08:13:27 -04:00
|
|
|
// TEST[setup:twitter]
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2019-08-23 08:13:27 -04:00
|
|
|
<1> Note that the indices specified (`twitter-1,twitter-2`) follows <<multi-index,multiple index names>> and wildcard format.
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2015-08-12 15:21:37 -04:00
|
|
|
[[updating-field-mappings]]
|
2019-08-23 08:13:27 -04:00
|
|
|
===== Update an existing field
|
2013-08-28 19:24:34 -04:00
|
|
|
|
2019-08-19 09:32:37 -04:00
|
|
|
// tag::put-field-mapping-exceptions[]
|
2015-08-12 15:21:37 -04:00
|
|
|
|
2019-08-19 09:32:37 -04:00
|
|
|
You can't change the mapping of an existing field, with the following
|
|
|
|
exceptions:
|
|
|
|
|
|
|
|
* You can add new <<properties,properties>> to an <<object,`object`>> field.
|
|
|
|
* You can use the <<multi-fields,`field`>> mapping parameter to enable
|
|
|
|
multi-fields.
|
|
|
|
* You can change the value of the <<ignore-above,`ignore_above`>> mapping
|
|
|
|
parameter.
|
|
|
|
|
|
|
|
Changing the mapping of an existing field could invalidate data that's already
|
|
|
|
indexed. If you need to change the mapping of a field, create a new index with
|
|
|
|
the correct mappings and <<docs-reindex,reindex>> your data into that index. If
|
|
|
|
you only want to rename a field, consider adding an <<alias, `alias`>> field.
|
|
|
|
|
|
|
|
// end::put-field-mapping-exceptions[]
|
2015-08-12 15:21:37 -04:00
|
|
|
|
|
|
|
For example:
|
2013-08-28 19:24:34 -04:00
|
|
|
|
|
|
|
[source,js]
|
2015-08-12 15:21:37 -04:00
|
|
|
-----------------------------------
|
2019-08-23 08:13:27 -04:00
|
|
|
PUT /my_index <1>
|
2013-08-28 19:24:34 -04:00
|
|
|
{
|
2015-08-12 15:21:37 -04:00
|
|
|
"mappings": {
|
2019-01-18 08:11:18 -05:00
|
|
|
"properties": {
|
|
|
|
"name": {
|
|
|
|
"properties": {
|
|
|
|
"first": {
|
|
|
|
"type": "text"
|
2015-08-12 15:21:37 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
2019-01-18 08:11:18 -05:00
|
|
|
},
|
|
|
|
"user_id": {
|
|
|
|
"type": "keyword"
|
2015-08-12 15:21:37 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
2015-08-12 15:21:37 -04:00
|
|
|
}
|
2013-08-28 19:24:34 -04:00
|
|
|
}
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
|
2019-08-23 08:13:27 -04:00
|
|
|
PUT /my_index/_mapping
|
2015-08-12 15:21:37 -04:00
|
|
|
{
|
|
|
|
"properties": {
|
|
|
|
"name": {
|
|
|
|
"properties": {
|
|
|
|
"last": { <2>
|
2016-03-18 12:01:27 -04:00
|
|
|
"type": "text"
|
2015-08-12 15:21:37 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"user_id": {
|
2016-03-18 12:01:27 -04:00
|
|
|
"type": "keyword",
|
2015-08-12 15:21:37 -04:00
|
|
|
"ignore_above": 100 <3>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
-----------------------------------
|
2016-05-09 09:42:23 -04:00
|
|
|
// CONSOLE
|
2015-08-12 15:21:37 -04:00
|
|
|
<1> Create an index with a `first` field under the `name` <<object>> field, and a `user_id` field.
|
|
|
|
<2> Add a `last` field under the `name` object field.
|
|
|
|
<3> Update the `ignore_above` setting from its default of 0.
|
Make PUT and DELETE consistent for _mapping, _alias and _warmer
See issue #4071
PUT options for _mapping:
Single type can now be added with
`[PUT|POST] {index|_all|*|regex|blank}/[_mapping|_mappings]/type`
and
`[PUT|POST] {index|_all|*|regex|blank}/type/[_mapping|_mappings]`
PUT options for _warmer:
PUT with a single warmer can now be done with
`[PUT|POST] {index|_all|*|prefix*|blank}/{type|_all|*|prefix*|blank}/[_warmer|_warmers]/warmer_name`
PUT options for _alias:
Single alias can now be PUT with
`[PUT|POST] {index|_all|*|prefix*|blank}/[_alias|_aliases]/alias`
DELETE options _mapping:
Several mappings can be deleted at once by defining several indices and types with
`[DELETE] /{index}/{type}`
`[DELETE] /{index}/{type}/_mapping`
`[DELETE] /{index}/_mapping/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_mapings` can be used.
DELETE options for _warmer:
Several warmers can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_warmer/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_warmers` can be used.
DELETE options for _alias:
Several aliases can be deleted at once by defining several indices and names with
`[DELETE] /{index}/_alias/{type}`
where
`index= * | _all | glob pattern | name1, name2, …`
`type= * | _all | glob pattern | name1, name2, …`
Alternatively, the keyword `_aliases` can be used.
2014-01-08 04:34:48 -05:00
|
|
|
|
2015-08-12 15:21:37 -04:00
|
|
|
Each <<mapping-params,mapping parameter>> specifies whether or not its setting
|
|
|
|
can be updated on an existing field.
|