105 lines
2.5 KiB
Plaintext
105 lines
2.5 KiB
Plaintext
[[properties]]
|
|
=== `properties`
|
|
|
|
Type mappings, <<object,`object` fields>> and <<nested,`nested` fields>>
|
|
contain sub-fields, called `properties`. These properties may be of any
|
|
<<mapping-types,datatype>>, including `object` and `nested`. Properties can
|
|
be added:
|
|
|
|
* explicitly by defining them when <<indices-create-index,creating an index>>.
|
|
* explicitly by defining them when adding or updating a mapping type with the <<indices-put-mapping,PUT mapping>> API.
|
|
* <<dynamic-mapping,dynamically>> just by indexing documents containing new fields.
|
|
|
|
Below is an example of adding `properties` to a mapping type, an `object`
|
|
field, and a `nested` field:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
PUT my_index
|
|
{
|
|
"mappings": {
|
|
"my_type": { <1>
|
|
"properties": {
|
|
"manager": { <2>
|
|
"properties": {
|
|
"age": { "type": "integer" },
|
|
"name": { "type": "text" }
|
|
}
|
|
},
|
|
"employees": { <3>
|
|
"type": "nested",
|
|
"properties": {
|
|
"age": { "type": "integer" },
|
|
"name": { "type": "text" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
PUT my_index/my_type/1 <4>
|
|
{
|
|
"region": "US",
|
|
"manager": {
|
|
"name": "Alice White",
|
|
"age": 30
|
|
},
|
|
"employees": [
|
|
{
|
|
"name": "John Smith",
|
|
"age": 34
|
|
},
|
|
{
|
|
"name": "Peter Brown",
|
|
"age": 26
|
|
}
|
|
]
|
|
}
|
|
--------------------------------------------------
|
|
// CONSOLE
|
|
<1> Properties under the `my_type` mapping type.
|
|
<2> Properties under the `manager` object field.
|
|
<3> Properties under the `employees` nested field.
|
|
<4> An example document which corresponds to the above mapping.
|
|
|
|
TIP: The `properties` setting is allowed to have different settings for fields
|
|
of the same name in the same index. New properties can be added to existing
|
|
fields using the <<indices-put-mapping,PUT mapping API>>.
|
|
|
|
==== Dot notation
|
|
|
|
Inner fields can be referred to in queries, aggregations, etc., using _dot
|
|
notation_:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
GET my_index/_search
|
|
{
|
|
"query": {
|
|
"match": {
|
|
"manager.name": "Alice White" <1>
|
|
}
|
|
},
|
|
"aggs": {
|
|
"Employees": {
|
|
"nested": {
|
|
"path": "employees"
|
|
},
|
|
"aggs": {
|
|
"Employee Ages": {
|
|
"histogram": {
|
|
"field": "employees.age", <2>
|
|
"interval": 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
// CONSOLE
|
|
// TEST[continued]
|
|
|
|
IMPORTANT: The full path to the inner field must be specified.
|