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.

Check the mapping to verify the above.

This document adds two string fields: email and name.middle.

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 or
not. It accepts three settings:

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
inner object. Inner objects inherit the setting from their parent
object or from the mapping type. For instance: