Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Mapping ›Типы данных полей

Тип поля nanoseconds даты

Этот тип данных является дополнением к типу данных date. Однако, существует важное различие между ними. Существующий тип данных date хранит даты с разрешением в миллисекунды. Тип данных date_nanos хранит даты с разрешением в наносекунды, что ограничивает диапазон дат приблизительно с 1970 по 2262 год, так как даты по-прежнему хранятся как целые числа, представляющие наносекунды с момента эпохи.

Запросы к наносекундам внутренне преобразуются в запросы диапазона к этому целочисленному представлению, а результат агрегаций и сохранённых полей преобразуется обратно в строку в зависимости от формата даты, связанного с полем.

Форматы дат можно настроить, но если format не указан, то используется значение по умолчанию:

    "strict_date_optional_time_nanos||epoch_millis"

Например:

PUT my-index-000001?include_type_name=true
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type": "date_nanos" 
        }
      }
    }
  }
}

PUT my-index-000001/_bulk?refresh
{ "index" : { "_id" : "1" } }
{ "date": "2015-01-01" } 
{ "index" : { "_id" : "2" } }
{ "date": "2015-01-01T12:10:30.123456789Z" } 
{ "index" : { "_id" : "3" } }
{ "date": 1420070400000 } 

GET my-index-000001/_search
{
  "sort": { "date": "asc"}, 
  "runtime_mappings": {
    "date_has_nanos": {
      "type": "boolean",
      "script": "emit(doc['date'].value.nano != 0)" 
    }
  },
  "fields": [
    {
      "field": "date",
      "format": "strict_date_optional_time_nanos" 
    },
    {
      "field": "date_has_nanos"
    }
  ]
}

Поле date использует значение по умолчанию format.

В этом документе используется обычная дата.

В этом документе указано время.

В этом документе используется значение миллисекунд с момента эпохи.

Обратите внимание, что значения sort, которые возвращаются, все в наносекундах с момента эпохи.

Используйте .nano в скриптах для возвращения наносекундной составляющей даты.

Вы можете указать формат при получении данных, используя параметр fields. Используйте strict_date_optional_time_nanos, иначе вы получите округленный результат.

Вы также можете указать несколько форматов дат, разделенных ||. Можно использовать те же параметры сопоставления, что и с полем date.

Тип данных даты с наносекундами принимает числа с десятичной точкой, например, {"date": 1618249875.123456}, но в некоторых случаях (#70085) мы теряем точность в этих датах, поэтому их следует избегать.

Ограничения

Агрегации по-прежнему используют разрешение в миллисекунды, даже при использовании поля date_nanos. Это ограничение также влияет на преобразования.

© 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/date_nanos.html

Spec-Zone.ru

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