Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Отображение ›Динамическое отображение

Динамическое отображение полей

Когда Elasticsearch обнаруживает новое поле в документе, оно динамически добавляет это поле в отображение типа по умолчанию. Параметр dynamic контролирует это поведение.

Вы можете явно указать Elasticsearch на динамическое создание полей на основе поступающих документов, установив параметр dynamic в значение true или runtime. При включенном динамическом отображении полей Elasticsearch использует правила в следующей таблице для определения способа отображения типов данных каждого поля.

Типы данных полей в следующей таблице — это единственные типы данных полей, которые Elasticsearch обнаруживает динамически. Все остальные типы данных необходимо отображать явно.

Тип данных Elasticsearch

Тип данных JSON

"dynamic":"true"

"dynamic":"runtime"

null

Поле не добавлено

Поле не добавлено

true или false

boolean

boolean

double

float

double

long

long

long

object

object

Поле не добавлено

array

Зависит от первого не-null значения в массиве

Зависит от первого не-null значения в массиве

string, проходящий детектирование дат

date

date

string, проходящий детектирование чисел

float или long

double или long

string, не проходящий детектирование date или numeric детектирования

text с подполем .keyword

keyword

Вы можете отключить динамическое отображение, как на уровне документа, так и на уровне object. Установка параметра dynamic в значение false игнорирует новые поля, а strict отклоняет документ, если Elasticsearch сталкивается с неизвестным полем.

Используйте API обновления отображения, чтобы обновить настройку dynamic для существующих полей.

Вы можете настроить правила динамического отображения полей для детектирования дат и детектирования чисел. Для определения пользовательских правил отображения, которые вы можете применить к дополнительным динамическим полям, используйте dynamic_templates.

Детектирование дат

Если date_detection включено (по умолчанию), то новые строковые поля проверяются на соответствие любому из шаблонов дат, указанных в dynamic_date_formats. Если совпадение найдено, добавляется новое поле date с соответствующим форматом.

Значение по умолчанию для dynamic_date_formats:

[ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]

Например:

PUT my-index-000001/_doc/1
{
  "create_date": "2015/09/02"
}

GET my-index-000001/_mapping 

Поле create_date было добавлено как поле date с format:
"yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z".

Отключение детектирования дат

Динамическое детектирование дат можно отключить, установив date_detection в значение false:

PUT my-index-000001
{
  "mappings": {
    "date_detection": false
  }
}

PUT my-index-000001/_doc/1 
{
  "create_date": "2015/09/02"
}

Поле create_date было добавлено как поле text.

Настройка форматов дат

Альтернативно, dynamic_date_formats можно настроить для поддержки собственных форматов дат:

PUT my-index-000001
{
  "mappings": {
    "dynamic_date_formats": ["MM/dd/yyyy"]
  }
}

PUT my-index-000001/_doc/1
{
  "create_date": "09/25/2015"
}

Детектирование чисел

Хотя JSON поддерживает собственные типы данных для чисел с плавающей точкой и целых чисел, некоторые приложения или языки иногда могут отображать числа в виде строк. Обычно правильным решением является явное отображение этих полей, но детектирование чисел (которое отключено по умолчанию) можно включить для автоматизации этого процесса:

PUT my-index-000001
{
  "mappings": {
    "numeric_detection": true
  }
}

PUT my-index-000001/_doc/1
{
  "my_float":   "1.0", 
  "my_integer": "1" 
}

Поле my_float добавлено как поле float.

Поле my_integer добавлено как поле long.

© 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-field-mapping.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API