Object field type
JSON documents are hierarchical in nature: the document may contain inner objects which, in turn, may contain inner objects themselves:
PUT my-index-000001/_doc/1
{ <1>
"region": "US",
"manager": { 2
"age": 30,
"name": { 3
"first": "John",
"last": "Smith"
}
}
}
- The outer document is also a JSON object.
- It contains an inner object called
manager
. - Which in turn contains an inner object called
name
.
Internally, this document is indexed as a simple, flat list of key-value pairs, something like this:
{
"region": "US",
"manager.age": 30,
"manager.name.first": "John",
"manager.name.last": "Smith"
}
An explicit mapping for the above document could look like this:
PUT my-index-000001
{
"mappings": {
"properties": { 1
"region": {
"type": "keyword"
},
"manager": { 2
"properties": {
"age": { "type": "integer" },
"name": { 3
"properties": {
"first": { "type": "text" },
"last": { "type": "text" }
}
}
}
}
}
}
}
- Properties in the top-level mappings definition.
- The
manager
field is an innerobject
field. - The
manager.name
field is an innerobject
field within themanager
field.
You are not required to set the field type
to object
explicitly, as this is the default value.
The following parameters are accepted by object
fields:
dynamic
- Whether or not new
properties
should be added dynamically to an existing object. Acceptstrue
(default),runtime
,false
andstrict
. enabled
- Whether the JSON value given for the object field should be parsed and indexed (
true
, default) or completely ignored (false
). subobjects
- Whether the object can hold subobjects (
true
, default) or not (false
). If not, sub-fields with dots in their names will be treated as leaves instead, otherwise their field names would be expanded to their corresponding object structure. properties
- The fields within the object, which can be of any data type, including
object
. New properties may be added to an existing object.
Important
If you need to index arrays of objects instead of single objects, read Nested first.