• ES日期时间格式化参数集锦


    目录

    目标

    ES版本信息

    官方文档

    相关术语

    内置格式常用参数

    epoch_millis(毫秒级时间戳格式)

    epoch_second(秒级时间戳格式)

    date_optional_time或者strict_date_optional_time

    basic_date(yyyyMMdd格式)

    basic_date_time(yyyyMMdd'T'HHmmss.SSSZ格式)

    basic_date_time_no_millis(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(HHmmssZ格式)

    date或者strict_date

    date_hour_minute_second或者strict_date_hour_minute_second

    自定义格式示例

    yyyy-MM-dd HH:mm:ss格式


    目标

    熟悉自定义日期格式,掌握内置日期格式参数。


    ES版本信息

    7.17.5


    官方文档

    formathttps://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping-date-format.html


    相关术语

    格式化

    在JSON文档中,日期表示为字符串。Elasticsearch使用一组预配置的格式来识别这些字符串并将其解析为一个long值,该值表示UTC中的毫秒数。

    自定义格式

    根据需求要求来自定义日期和时间格式。

    内置格式

    使用ES自带的参数来规范时间和日期。

    严格的日期格式

    1. 年使用4位数字;
    2. 月使用2位数字;
    3. 日使用2位数字;

    例如:像这样的日期5/11/1将被视为无效,需要重写才能2005/11/01被日期解析器接受。很多参数支持加上strict_前缀,表示需要这种严格的格式。
    作用:配置动态映射,确保不会将不想关的字符串类型的字段映射成日期类型。

    UTC

    常用的一种时间格式。yyyy-MM-dd'T'HH:mm:ss.SSSZ是UTC的标准格式。'T'是日期和时间的分隔符。SSS表示纳秒。Z表示时区,+表示东区,-表示西区。如东八区用+08:00表示,西五区用-05:00表示。

    纳秒

    1000000000纳秒=1x10^9纳秒=1秒


    内置格式常用参数

    epoch_millis(毫秒级时间戳格式)

    作用:自纪元以来的毫秒数的格式化程序。

    1. PUT /epoch_millis_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "epoch_millis"
    8. }
    9. }
    10. }
    11. }
    12. PUT /epoch_millis_db/_doc/1
    13. {
    14. "timeTest": "1659801198",
    15. "timeTest2": "1659799518",
    16. "timeTest3": "2020-01-01",
    17. "timeTest4": "2020/01/01"
    18. }
    19. #只有timeTest2不是date类型。
    20. GET /epoch_millis_db/_mapping

    epoch_second(秒级时间戳格式)

    作用

    自纪元以来的秒数的格式化程序。

    1. PUT /epoch_second_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "epoch_second"
    8. }
    9. }
    10. }
    11. }
    12. PUT /epoch_second_db/_doc/1
    13. {
    14. "timeTest": "1659801198",
    15. "timeTest2": "1659799518",
    16. "timeTest3": "2020-01-01",
    17. "timeTest4": "2020/01/01"
    18. }
    19. #只有timeTest2不是date类型。
    20. GET /epoch_second_db/_mapping

    date_optional_time或者strict_date_optional_time

    date_optional_time作用

    一个通用的ISO日期时间解析器,必须至少包括年份。格式yyyy-MM-dd'T'HH:mm:ss.SSSZyyyy-MM-dd

    strict_date_optional_time作用

    一个通用的ISO日期时间解析器,必须至少包括年份。要求严格日期格式。格式yyyy-MM-dd'T'HH:mm:ss.SSSZyyyy-MM-dd

    1. PUT /date_optional_time_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "date_optional_time"
    8. },
    9. "timeTest2": {
    10. "type": "date",
    11. "format": "date_optional_time"
    12. },
    13. "timeTest3": {
    14. "type": "date",
    15. "format": "strict_date_optional_time"
    16. },
    17. "timeTest4": {
    18. "type": "date",
    19. "format": "strict_date_optional_time"
    20. },
    21. "timeTest5": {
    22. "type": "date",
    23. "format": "strict_date_optional_time"
    24. }
    25. }
    26. }
    27. }
    28. GET /date_optional_time_db/_mapping
    29. #timeTest2和timeTest4:东八区(北京时间)2022年5月3日下午5点30分8秒
    30. #timeTest5:西五区2022年5月3日下午5点30分8秒91纳秒
    31. PUT /date_optional_time_db/_doc/1
    32. {
    33. "timeTest": "22-05-03",
    34. "timeTest2": "22-5-3T17:30:08+08:00",
    35. "timeTest3": "2004-05-03T17:30:08",
    36. "timeTest4": "2022-05-03T17:30:08+08:00",
    37. "timeTest5": "2022-05-03T17:30:08.91-05:00"
    38. }

    basic_date(yyyyMMdd格式)

    作用

    约束字段格式必须是yyyyMMdd类型。

    1. PUT /basic_date_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_date"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_date_db/_mapping
    13. PUT /basic_date_db/_doc/1
    14. {
    15. "timeTest": "20220503"
    16. }

    basic_date_time(yyyyMMdd'T'HHmmss.SSSZ格式)

    作用

    约束字段格式必须是yyyyMMdd'T'HHmmss.SSSZ类型。'T'是日期和时间的分隔符。

    1. PUT /basic_date_time_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_date_time"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_date_time_db/_mapping
    13. PUT /basic_date_time_db/_doc/1
    14. {
    15. "timeTest": "20220503T120228.33+08:00"
    16. }

    basic_date_time_no_millis(yyyyMMdd'T'HHmmssZ格式)

    1. PUT /basic_date_time_no_millis_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_date_time_no_millis"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_date_time_no_millis_db/_mapping
    13. PUT /basic_date_time_no_millis_db/_doc/1
    14. {
    15. "timeTest": "20220503T120228+08:00"
    16. }

    basic_ordinal_date(yyyyDDD格式)

    作用

    描述某年的第几天。

    1. PUT /basic_ordinal_date_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_ordinal_date"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_ordinal_date_db/_mapping
    13. #2022年第75天
    14. PUT /basic_ordinal_date_db/_doc/1
    15. {
    16. "timeTest": "2022075"
    17. }

    basic_ordinal_date_time(yyyyDDD'T'HHmmss.SSSZ格式)

    作用

    描述某年的第几天,精确到纳秒。

    1. PUT /basic_ordinal_date_time_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_ordinal_date_time"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_ordinal_date_time_db/_mapping
    13. #2022年第75天
    14. PUT /basic_ordinal_date_time_db/_doc/1
    15. {
    16. "timeTest": "2022075T122345.466444+08:00"
    17. }

    basic_ordinal_date_time_no_millis(yyyyDDD'T'HHmmssZ格式)

    作用

    描述某年的第几天,精确到秒。

    1. PUT /basic_ordinal_date_time_no_millis_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_ordinal_date_time_no_millis"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_ordinal_date_time_no_millis_db/_mapping
    13. #2022年第75天
    14. PUT /basic_ordinal_date_time_no_millis_db/_doc/1
    15. {
    16. "timeTest": "2022075T122345+08:00"
    17. }

    basic_time(HHmmss.SSSZ格式

    作用

    官方文档描述该参数的格式为HHmmss.SSSZ,且后面是三位数的毫秒数。实际测试过程中发现精确单位是纳秒,这应该是官方文档描述错误,大家应该要注意。

    官方描述(有误

    basic_time

    A basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit millis, and time zone offset: HHmmss.SSSZ.

    1. PUT /basic_time_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_time"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_time_db/_mapping
    13. #12点23分45秒999999999纳秒(东八区)
    14. PUT /basic_time_db/_doc/1
    15. {
    16. "timeTest": "122345.999999999+08:00"
    17. }

    basic_time_no_millis(HHmmssZ格式)

    作用

    约束时间为HHmmssZ格式,精确到秒。


    basic_t_time(HHmmssZ格式)

    作用

    约束时间为'T'HHmmss.SSSZ格式。官方文档描述精度为毫秒,实际测试发现精度为纳秒。

    官方描述(有误

    basic_t_time

    A basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit millis, and time zone off set prefixed by T'T'HHmmss.SSSZ.

    1. PUT /basic_t_time_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "basic_t_time"
    8. }
    9. }
    10. }
    11. }
    12. GET /basic_t_time_db/_mapping
    13. #12点23分45秒999999999纳秒(东八区)
    14. PUT /basic_t_time_db/_doc/1
    15. {
    16. "timeTest": "T122345.999999999+08:00"
    17. }

    date或者strict_date

    作用

    约束日期格式为yyyy-MM-dd。其中strict_date表示严格约束。

    1. PUT /date_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "date"
    8. },
    9. "timeTest2": {
    10. "type": "date",
    11. "format": "strict_date"
    12. }
    13. }
    14. }
    15. }
    16. GET /date_db/_mapping
    17. PUT /date_db/_doc/1
    18. {
    19. "timeTest": "22-1-1",
    20. "timeTest2": "2022-01-01"
    21. }

    date_hour_minute_second或者strict_date_hour_minute_second

    作用

    约束日期格式为yyyy-MM-dd'T'HH:mm:ss。其中strict_date_hour_minute_second表示严格约束。

    1. PUT /date_hour_minute_second_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "timeTest": {
    6. "type": "date",
    7. "format": "date_hour_minute_second"
    8. },
    9. "timeTest2": {
    10. "type": "date",
    11. "format": "strict_date_hour_minute_second"
    12. }
    13. }
    14. }
    15. }
    16. GET /date_hour_minute_second_db/_mapping
    17. PUT /date_hour_minute_second_db/_doc/1
    18. {
    19. "timeTest": "22-1-1T12:23:12",
    20. "timeTest2": "2022-01-01T12:23:12"
    21. }

    自定义格式示例

    yyyy-MM-dd HH:mm:ss格式

    1. PUT /stu_db
    2. {
    3. "mappings": {
    4. "properties": {
    5. "createTime":{
    6. "type":"date",
    7. "format": "yyyy-MM-dd HH:mm:ss"
    8. }
    9. }
    10. }
    11. }
    12. GET /stu_db/_mapping

  • 相关阅读:
    Linux运维:网络管理
    HTTPS的理解(证书、认证方式、TLS握手)
    SpringBoot在静态方法或工具类中注入Bean及配置参数
    Element UI主题换肤功能(基于vue-element-admin框架)
    聚量推客滴滴学生认证app地推网推拉新升级啦
    动规(16)-并查集基础题——格子游戏
    今天你考ACP了没?备考指南即将上线!
    SpringBoot:Web开发之Filter实践
    学习笔记9--智能驾驶的功能安全设计之功能安全设计
    No6-5.从零搭建spring-cloud-alibaba微服务框架,添加用户鉴权逻辑,操作权限等(五,no6-5)
  • 原文地址:https://blog.csdn.net/qq_39706570/article/details/126197382