-
Notifications
You must be signed in to change notification settings - Fork 24.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[DOCS] Add dynamic runtime fields to docs (#66194)
* [DOCS] Add dynamic runtime fields to docs. * Clarifying edits and example changes. * Creating better table and incorporating review comments. * Change numeral to superscript.
- Loading branch information
Adam Locke
authored
Dec 14, 2020
1 parent
9bb6a3a
commit fe54c2f
Showing
3 changed files
with
85 additions
and
69 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,31 @@ | ||
[[dynamic]] | ||
=== `dynamic` | ||
|
||
By default, fields can be added _dynamically_ to a document, or to | ||
<<object,inner objects>> within a document, just by indexing a document | ||
containing the new field. For instance: | ||
When you index a document containing a new field, {es} <<dynamic-mapping,adds the field dynamically>> to a document or to inner objects within a document. The | ||
following document adds the string field `username`, the object field | ||
`name`, and two string fields under the `name` object: | ||
|
||
[source,console] | ||
-------------------------------------------------- | ||
PUT my-index-000001/_doc/1 <1> | ||
---- | ||
PUT my-index-000001/_doc/1 | ||
{ | ||
"username": "johnsmith", | ||
"name": { | ||
"name": { <1> | ||
"first": "John", | ||
"last": "Smith" | ||
} | ||
} | ||
GET my-index-000001/_mapping <2> | ||
---- | ||
<1> Refer to fields under the `name` object as `name.first` and `name.last`. | ||
<2> Check the mapping to view changes. | ||
|
||
The following document adds two string fields: `email` and `name.middle`: | ||
|
||
PUT my-index-000001/_doc/2 <3> | ||
[source,console] | ||
---- | ||
PUT my-index-000001/_doc/2 | ||
{ | ||
"username": "marywhite", | ||
"email": "[email protected]", | ||
|
@@ -29,35 +36,24 @@ PUT my-index-000001/_doc/2 <3> | |
} | ||
} | ||
GET my-index-000001/_mapping <4> | ||
-------------------------------------------------- | ||
|
||
<1> This document introduces the string field `username`, the object field | ||
`name`, and two string fields under the `name` object which can be | ||
referred to as `name.first` and `name.last`. | ||
<2> Check the mapping to verify the above. | ||
<3> This document adds two string fields: `email` and `name.middle`. | ||
<4> Check the mapping to verify the changes. | ||
GET my-index-000001/_mapping | ||
---- | ||
|
||
The details of how new fields are detected and added to the mapping is explained in <<dynamic-mapping>>. | ||
TIP: Use the <<indices-put-mapping,PUT mapping API>> to update the `dynamic` | ||
setting on existing fields. | ||
|
||
The `dynamic` setting controls whether new fields can be added dynamically or | ||
not. It accepts three settings: | ||
[[dynamic-inner-objects]] | ||
==== Setting `dynamic` on inner objects | ||
<<object,Inner objects>> inherit the `dynamic` setting from their parent | ||
object or from the mapping type. In the following example, dynamic mapping is | ||
disabled at the type level, so no new top-level fields will be added | ||
dynamically. | ||
|
||
[horizontal] | ||
`true`:: Newly detected fields are added to the mapping. (default) | ||
`false`:: Newly detected fields are ignored. These fields will not be indexed so will not be searchable | ||
but will still appear in the `_source` field of returned hits. These fields will not be added | ||
to the mapping, new fields must be added explicitly. | ||
`strict`:: If new fields are detected, an exception is thrown and the document is rejected. New fields | ||
must be explicitly added to the mapping. | ||
|
||
The `dynamic` setting may be set at the mapping type level, and on each | ||
<<object,inner object>>. Inner objects inherit the setting from their parent | ||
object or from the mapping type. For instance: | ||
However, the `user.social_networks` object enables dynamic mapping, so you can | ||
add fields to this inner object. | ||
|
||
[source,console] | ||
-------------------------------------------------- | ||
---- | ||
PUT my-index-000001 | ||
{ | ||
"mappings": { | ||
|
@@ -68,20 +64,32 @@ PUT my-index-000001 | |
"name": { | ||
"type": "text" | ||
}, | ||
"social_networks": { <3> | ||
"dynamic": true, | ||
"social_networks": { | ||
"dynamic": true, <3> | ||
"properties": {} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
-------------------------------------------------- | ||
---- | ||
|
||
<1> Dynamic mapping is disabled at the type level, so no new top-level fields will be added dynamically. | ||
<1> Disables dynamic mapping at the type level. | ||
<2> The `user` object inherits the type-level setting. | ||
<3> The `user.social_networks` object enables dynamic mapping, so new fields may be added to this inner object. | ||
<3> Enables dynamic mapping for this inner object. | ||
|
||
TIP: The `dynamic` setting can be updated on existing fields | ||
using the <<indices-put-mapping,PUT mapping API>>. | ||
[[dynamic-parameters]] | ||
==== Parameters for `dynamic` | ||
The `dynamic` parameter controls whether new fields are added dynamically, and | ||
accepts the following parameters: | ||
|
||
[horizontal] | ||
`true`:: New fields are added to the mapping (default). | ||
`runtime`:: New fields are added to the mapping as <<runtime,runtime fields>>. | ||
These fields are not indexed, and are loaded from `_source` at query time. | ||
`false`:: New fields are ignored. These fields will not be indexed | ||
or searchable, but will still appear in the `_source` field of returned hits. These fields will not be added | ||
to the mapping, and new fields must be added explicitly. | ||
`strict`:: If new fields are detected, an exception is thrown and the document | ||
is rejected. New fields must be explicitly added to the mapping. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters