| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | [[dynamic]]=== `dynamic`By default, fields can be added _dynamically_ to a document, or to<<object,inner objects>> within a document, just by indexing a documentcontaining the new field.  For instance:[source,console]--------------------------------------------------PUT my_index/_doc/1 <1>{  "username": "johnsmith",  "name": {    "first": "John",    "last": "Smith"  }}GET my_index/_mapping <2>PUT my_index/_doc/2 <3>{  "username": "marywhite",  "email": "mary@white.com",  "name": {    "first": "Mary",    "middle": "Alice",    "last": "White"  }}GET my_index/_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.The details of how new fields are detected and added to the mapping is explained in <<dynamic-mapping>>.The `dynamic` setting controls whether new fields can be added dynamically ornot.  It accepts three settings:[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 parentobject or from the mapping type.  For instance:[source,console]--------------------------------------------------PUT my_index{  "mappings": {    "dynamic": false, <1>    "properties": {      "user": { <2>        "properties": {          "name": {            "type": "text"          },          "social_networks": { <3>            "dynamic": true,            "properties": {}          }        }      }    }  }}--------------------------------------------------<1> Dynamic mapping is disabled at the type level, so no new top-level fields will be added dynamically.<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.TIP: The `dynamic` setting can be updated on existing fieldsusing the <<indices-put-mapping,PUT mapping API>>.
 |