Формат
В JSON-документах даты представлены в виде строк. Elasticsearch использует набор предварительно настроенных форматов для распознавания и парсинга этих строк в длинное значение, представляющее миллисекунды с начала эпохи в UTC.
Помимо встроенных форматов, можно указать собственные пользовательские форматы с помощью знакомого yyyy/MM/dd синтаксиса:
PUT my-index-000001
{
"mappings": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
} Многие API, поддерживающие значения дат, также поддерживают выражения математики дат, такие как now-1m/d — текущее время, минус один месяц, округленное вниз до ближайшего дня.
Пользовательские форматы дат
Поддерживаются полностью настраиваемые форматы дат. Синтаксис для них объяснён в документации DateTimeFormatter.
Встроенные форматы
Большинство из нижеперечисленных форматов имеют strict сопутствующий формат, что означает, что части года, месяца и дня недели должны использовать соответственно 4, 2 и 2 цифры точно, потенциально дополняя нулями. Например, дата, подобная 5/11/1, будет считаться недопустимой и должна быть переписана как 2005/11/01, чтобы быть принятой анализатором дат.
Чтобы использовать их, вам необходимо добавить strict_ к имени формата даты, например strict_date_optional_time вместо date_optional_time.
Эти строгие форматы дат особенно полезны при динамическом отображении полей дат, чтобы убедиться, что случайно не отображаются не относящиеся к датам строки.
В следующих таблицах перечислены все поддерживаемые стандартные ISO-форматы:
-
epoch_millis - Форматировщик для числа миллисекунд с момента эпохи. Обратите внимание, что эта метка времени ограничена пределами Java
Long.MIN_VALUEиLong.MAX_VALUE. -
epoch_second - Форматировщик для числа секунд с момента эпохи. Обратите внимание, что эта метка времени ограничена пределами Java
Long.MIN_VALUEиLong. MAX_VALUE, разделённых на 1000 (число миллисекунд в секунде). -
date_optional_timeилиstrict_date_optional_time -
Универсальный парсер ISO-форматированных дат и времени, где дата должна включать минимум год, а время (разделенное
T), необязательно. Примеры:yyyy-MM-dd'T'HH:mm:ss.SSSZилиyyyy-MM-dd.NOTE: When using `date_optional_time`, the parsing is lenient and will attempt to parse numbers as a year (e.g. `292278994` will be parsed as a year). This can lead to unexpected results when paired with a numeric focused format like `epoch_second` and `epoch_millis`. It is recommended you use `strict_date_optional_time` when pairing with a numeric focused format.
-
strict_date_optional_time_nanos - Универсальный парсер ISO-форматированных дат и времени, где дата должна включать минимум год, а время (разделенное
T), необязательно. Часть дроби секунды имеет разрешение в наносекунды. Примеры:yyyy-MM-dd'T'HH:mm:ss.SSSSSSZилиyyyy-MM-dd. -
basic_date - Базовый форматировщик для полной даты в формате четырехзначный год, двухзначный месяц и двухзначный день:
yyyyMMdd. -
basic_date_time - Базовый форматировщик, который объединяет базовую дату и время, разделённые T:
yyyyMMdd'T'HHmmss.SSSZ. -
basic_date_time_no_millis - Базовый форматировщик, который объединяет базовую дату и время без миллисекунд, разделённые T:
yyyyMMdd'T'HHmmssZ. -
basic_ordinal_date - Форматировщик для полной порядковой даты, используя четырёхзначный год и трёхзначный день года:
yyyyDDD. -
basic_ordinal_date_time - Форматировщик для полной порядковой даты и времени, используя четырёхзначный год и трёхзначный день года:
yyyyDDD'T'HHmmss.SSSZ. -
basic_ordinal_date_time_no_millis - Форматировщик для полной порядковой даты и времени без миллисекунд, используя четырёхзначный год и трёхзначный день года:
yyyyDDD'T'HHmmssZ. -
basic_time - Базовый форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд, трёхзначных миллисекунд и смещения часового пояса:
HHmmss.SSSZ. -
basic_time_no_millis - Базовый форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд и смещения часового пояса:
HHmmssZ. -
basic_t_time - Базовый форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд, трёхзначных миллисекунд и смещения часового пояса, префикс T:
'T'HHmmss.SSSZ. -
basic_t_time_no_millis - Базовый форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд и смещения часового пояса, префикс T:
'T'HHmmssZ. -
basic_week_dateилиstrict_basic_week_date - Базовый форматировщик для полной даты как четырёхзначный номер года, двухзначный номер недели в году и однозначный номер дня недели:
xxxx'W'wwe. -
basic_week_date_timeилиstrict_basic_week_date_time - Базовый форматировщик, объединяющий базовую дату и время, разделённые T:
xxxx'W'wwe'T'HHmmss.SSSZ. -
basic_week_date_time_no_millisилиstrict_basic_week_date_time_no_millis - Базовый форматировщик, объединяющий базовую дату и время без миллисекунд, разделённые T:
xxxx'W'wwe'T'HHmmssZ. -
dateилиstrict_date - Форматировщик для полной даты в формате четырехзначный год, двухзначный месяц и двухзначный день:
yyyy-MM-dd. -
date_hourилиstrict_date_hour - Форматировщик, объединяющий полную дату и двухзначный час:
yyyy-MM-dd'T'HH. -
date_hour_minuteилиstrict_date_hour_minute - Форматировщик, объединяющий полную дату, двухзначный час и двухзначные минуты:
yyyy-MM-dd'T'HH:mm. -
date_hour_minute_secondилиstrict_date_hour_minute_second - Форматировщик, объединяющий полную дату, двухзначный час, двухзначные минуты и двухзначные секунды:
yyyy-MM-dd'T'HH:mm:ss. -
date_hour_minute_second_fractionилиstrict_date_hour_minute_second_fraction - Форматировщик, объединяющий полную дату, двухзначный час, двухзначные минуты, двухзначные секунды и трёхзначную дробную часть секунды:
yyyy-MM-dd'T'HH:mm:ss.SSS. -
date_hour_minute_second_millisилиstrict_date_hour_minute_second_millis - Форматировщик, объединяющий полную дату, двухзначный час, двухзначные минуты, двухзначные секунды и трёхзначную дробную часть секунды:
yyyy-MM-dd'T'HH:mm:ss.SSS. -
date_timeилиstrict_date_time - Форматировщик, объединяющий полную дату и время, разделённые T:
yyyy-MM-dd'T'HH:mm:ss.SSSZ. -
date_time_no_millisилиstrict_date_time_no_millis - Форматировщик, объединяющий полную дату и время без миллисекунд, разделённые T:
yyyy-MM-dd'T'HH:mm:ssZ. -
hourилиstrict_hour - Форматировщик для двухзначного часа:
HH -
hour_minuteилиstrict_hour_minute - Форматировщик для двухзначного часа и двухзначных минут:
HH:mm. -
hour_minute_secondилиstrict_hour_minute_second - Форматировщик для двухзначного часа, двухзначных минут и двухзначных секунд:
HH:mm:ss. -
hour_minute_second_fractionилиstrict_hour_minute_second_fraction - Форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд и трёхзначной дроби секунды:
HH:mm:ss.SSS. -
hour_minute_second_millisилиstrict_hour_minute_second_millis - Форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд и трёхзначной дроби секунды:
HH:mm:ss.SSS. -
ordinal_dateилиstrict_ordinal_date - Форматировщик для полной порядковой даты, используя четырёхзначный год и трёхзначный день года:
yyyy-DDD. -
ordinal_date_timeилиstrict_ordinal_date_time - Форматировщик для полной порядковой даты и времени, используя четырёхзначный год и трёхзначный день года:
yyyy-DDD'T'HH:mm:ss.SSSZ. -
ordinal_date_time_no_millisилиstrict_ordinal_date_time_no_millis - Форматировщик для полной порядковой даты и времени без миллисекунд, используя четырёхзначный год и трёхзначный день года:
yyyy-DDD'T'HH:mm:ssZ. -
timeилиstrict_time - Форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд, трёхзначной дроби секунды и смещения часового пояса:
HH:mm:ss.SSSZ. -
time_no_millisилиstrict_time_no_millis - Форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд и смещения часового пояса:
HH:mm:ssZ. -
t_timeилиstrict_t_time - Форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд, трёхзначной дроби секунды и смещения часового пояса, префикс T:
'T'HH:mm:ss.SSSZ. -
t_time_no_millisилиstrict_t_time_no_millis - Форматировщик для двухзначного часа, двухзначных минут, двухзначных секунд и смещения часового пояса, префикс T:
'T'HH:mm:ssZ. -
week_dateилиstrict_week_date - Форматировщик для полной даты как четырёхзначный номер года, двухзначный номер недели в году и однозначный номер дня недели:
xxxx-'W'ww-e. -
week_date_timeилиstrict_week_date_time - Форматировщик, объединяющий полную дату и время недели, разделённые T:
xxxx-'W'ww-e'T'HH:mm:ss.SSSZ. -
week_date_time_no_millisилиstrict_week_date_time_no_millis - Форматировщик, объединяющий полную дату и время недели без миллисекунд, разделённые T:
xxxx-'W'ww-e'T'HH:mm:ssZ. -
weekyearилиstrict_weekyear - Форматировщик для четырёхзначного номера года:
xxxx. -
weekyear_weekилиstrict_weekyear_week - Форматировщик для четырёхзначного номера года и двухзначного номера недели в году:
xxxx-'W'ww. -
weekyear_week_dayилиstrict_weekyear_week_day - Форматировщик для четырёхзначного номера года, двухзначного номера недели в году и однозначного номера дня недели:
xxxx-'W'ww-e. -
yearилиstrict_year - Форматировщик для четырёхзначного года:
yyyy. -
year_monthилиstrict_year_month - Форматировщик для четырёхзначного года и двухзначного месяца:
yyyy-MM. -
year_month_dayилиstrict_year_month_day - Форматировщик для четырёхзначного года, двухзначного месяца и двухзначного дня:
yyyy-MM-dd.
© 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/mapping-date-format.html