[[mapping-dynamic-mapping]]
== Dynamic Mapping

Default mappings allow to automatically apply generic mapping definition
to types that do not have mapping pre defined. This is mainly done
thanks to the fact that the
<<mapping-object-type,object mapping>> and
namely the <<mapping-root-object-type,root
object mapping>> allow for schema-less dynamic addition of unmapped
fields.

The default mapping definition is plain mapping definition that is
embedded within the distribution:

[source,js]
--------------------------------------------------
{
    "_default_" : {
    }
}
--------------------------------------------------

Pretty short, no? Basically, everything is defaulted, especially the
dynamic nature of the root object mapping. The default mapping
definition can be overridden in several manners. The simplest manner is
to simply define a file called `default-mapping.json` and placed it
under the `config` directory (which can be configured to exist in a
different location). It can also be explicitly set using the
`index.mapper.default_mapping_location` setting.

The dynamic creation of mappings for unmapped types can be completely
disabled by setting `index.mapper.dynamic` to `false`.

As an example, here is how we can change the default
<<mapping-date-format,date_formats>> used in the
root and inner object types:

[source,js]
--------------------------------------------------
{
    "_default_" : {
        "date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy", "date_optional_time"],
    }
}
--------------------------------------------------

[[mapping-dynamic-mapping]]
== Dynamic Mapping

Default mappings allow to automatically apply generic mapping definition
to types that do not have mapping pre defined. This is mainly done
thanks to the fact that the
<<mapping-object-type,object mapping>> and
namely the <<mapping-root-object-type,root
object mapping>> allow for schema-less dynamic addition of unmapped
fields.

The default mapping definition is plain mapping definition that is
embedded within the distribution:

[source,js]
--------------------------------------------------
{
    "_default_" : {
    }
}
--------------------------------------------------

Pretty short, no? Basically, everything is defaulted, especially the
dynamic nature of the root object mapping. The default mapping
definition can be overridden in several manners. The simplest manner is
to simply define a file called `default-mapping.json` and placed it
under the `config` directory (which can be configured to exist in a
different location). It can also be explicitly set using the
`index.mapper.default_mapping_location` setting.

The dynamic creation of mappings for unmapped types can be completely
disabled by setting `index.mapper.dynamic` to `false`.

As an example, here is how we can change the default
<<mapping-date-format,date_formats>> used in the
root and inner object types:

[source,js]
--------------------------------------------------
{
    "_default_" : {
        "date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy", "date_optional_time"]
    }
}
--------------------------------------------------

Remove a comma in doc to make example a valid json.
Remove a comma in doc to make example a valid json.

This will help reader to do a hurry up copy-paste test.
