dynamic
При индексировании документа, содержащего новое поле, Elasticsearch динамически добавляет поле в документ или во внутренние объекты документа. Следующий документ добавляет строковое поле username, объектное поле name и два строковых поля в объекте name:
PUT my-index-000001/_doc/1
{
"username": "johnsmith",
"name": {
"first": "John",
"last": "Smith"
}
}
GET my-index-000001/_mapping | Обращайтесь к полям внутри объекта | |
| Проверьте отображение, чтобы увидеть изменения. |
Следующий документ добавляет два строковых поля: email и name.middle:
PUT my-index-000001/_doc/2
{
"username": "marywhite",
"email": "mary@white.com",
"name": {
"first": "Mary",
"middle": "Alice",
"last": "White"
}
}
GET my-index-000001/_mapping Установка dynamic для вложенных объектов
Вложенные объекты наследуют параметр dynamic от родительского объекта или от типа отображения. В следующем примере динамическое отображение отключено на уровне типа, поэтому новые поля верхнего уровня не будут динамически добавляться.
Однако объект user.social_networks включает динамическое отображение, поэтому вы можете добавить поля в этот вложенный объект.
PUT my-index-000001
{
"mappings": {
"dynamic": false,
"properties": {
"user": {
"properties": {
"name": {
"type": "text"
},
"social_networks": {
"dynamic": true,
"properties": {}
}
}
}
}
}
} | Отключает динамическое отображение на уровне типа. | |
| Объект | |
| Включает динамическое отображение для этого вложенного объекта. |
Параметры для dynamic
Параметр dynamic управляет тем, добавляются ли новые поля динамически, и принимает следующие параметры:
| | Новые поля добавляются в отображение (по умолчанию). |
| | Новые поля добавляются в отображение как поля runtime. Эти поля не индексируются и загружаются из |
| | Новые поля игнорируются. Эти поля не будут индексироваться или использоваться для поиска, но по-прежнему будут отображаться в поле |
| | При обнаружении новых полей генерируется исключение, и документ отклоняется. Новые поля должны быть явно добавлены в отображение. |
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/dynamic.html