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
{
"region": "US",
"manager": {
"age": 30,
"name": {
"first": "John",
"last": "Smith"
}
}
}
|
The outer document is also a JSON object. |
|
|
It contains an inner object called |
|
|
Which in turn contains an inner object called |
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": {
"region": {
"type": "keyword"
},
"manager": {
"properties": {
"age": { "type": "integer" },
"name": {
"properties": {
"first": { "type": "text" },
"last": { "type": "text" }
}
}
}
}
}
}
}
|
Properties in the top-level mappings definition. |
|
|
The |
|
|
The |
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:
|
Whether or not new |
|
|
Whether the JSON value given for the object field should be
parsed and indexed ( |
|
|
The fields within the object, which can be of any
data type, including |
If you need to index arrays of objects instead of single objects, read Nested first.