当前位置: 首页 > article >正文

ES--Mapping之日期时间类型

原文网址:ES--Mapping之日期时间类型-CSDN博客

简介

本文介绍ElasticSearch的Mapping之日期时间类型。

官网地址:format | Elasticsearch Guide [8.17] | Elastic

类型概述

在ES里,date的格式可以被指定的,如果没有指定,默认是:“strict_date_optional_time || epoch_millis”(strict_date_optional_time或者epoch_millis)。

epoch_millis

epoch_millis就是从开始纪元(1970-01-01 00:00:00 UTC)开始的毫秒数(long型)。1970以前的时间也可以,值是负数。
如:2020/8/31 14:57:56是常用的日期格式,它距离1970-01-01 00:00:00 有 1598857076000豪秒。所以可以用1598857076000表示2020/8/31 14:57:56。

strict_date_optional_time

strict_date_optional_time是date_optional_time的严格级别,这个严格指的是:年、月、日必须以4位、2位、2位表示,不足两位的话第一位需用0补齐。常见格式如下:

  • yyyy
  • yyyyMM
  • yyyyMMdd
  • yyyyMMddHHmmss
  • yyyy-MM
  • yyyy-MM-dd
  • yyyy-MM-dd'T'HH:mm:ss dd
  • yyyy-MM-dd'T'HH:mm:ss.SSS
  • yyyy-MM-dd'T'HH:mm:ss.SSSZ

Z"表示时区,例:

东八区:2025-03-03T21:41:43.026+0800;2025-03-03T21:41:43.026+08:00;

如果以2025-03-03T21:41:43.026+0800写入ES,ES里最终是这种结构:2025-03-03T13:41:43.026Z。也就是说:ES会以0时区去存!

指定日期格式

如果插入了不支持的日期格式,就会报错,比如,插入2025-03-03 19:17:43,报错信息为:Elasticsearch exception [type=illegal_argument_exception, reason=failed to parse date field [2025-03-03 19:17:43] with format [strict_date_optional_time||epoch_millis]]

解决方法是,修改ES的索引定义,支持更多日期格式,例如:

PUT /test_date_index
{
  "mappings":{
    "properties":{
      "birthday":{
        "type":"date",
        "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis"
      }
    }
  }
}

上边这个请求,就把test_data_index这个索引的birthday字段进行了修改,支持多种格式。

kibana里边,可以指定时间字段,用于筛选和排序等:

如果时间字段对不上,那么右上角会没有时间筛选按钮! 

代码写法

 如果要在Java代码里指定时间格式,这样写:

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone="GMT+8")
@Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
private OffsetDateTime logTime;

字符含义大全

ES由java语言编写,里面使用的java中的时间日期格式类如下:

(这是Java里DateTimeFormatter类的一段注释)

Symbol

Meaning

Presentation

Examples

G

era

text

AD; Anno Domini; A

u

year

year

2004; 04

y

year-of-era

year

2004; 04

D

day-of-year

number

189

M/L

month-of-year

number/text

7; 07; Jul; July; J

d

day-of-month

number

10

Q/q

quarter-of-year

number/text

3; 03; Q3; 3rd quarter

Y

week-based-year

year

1996; 96

w

week-of-week-based-year

number

27

W

week-of-month

number

4

E

day-of-week

text

Tue; Tuesday; T

e/c

localized day-of-week

number/text

2; 02; Tue; Tuesday; T

F

week-of-month

number

3

a

am-pm-of-day

text

PM

h

clock-hour-of-am-pm (1-12)

number

12

K

hour-of-am-pm (0-11)

number

0

k

clock-hour-of-am-pm (1-24)

number

0

H

hour-of-day (0-23)

number

0

m

minute-of-hour

number

30

s

second-of-minute

number

55

S

fraction-of-second

fraction

978

A

milli-of-day

number

1234

n

nano-of-second

number

987654321

N

nano-of-day

number

1234000000

V

time-zone ID

zone-id

America/Los_Angeles; Z; -08:30

z

time-zone name

zone-name

Pacific Standard Time; PST

O

localized zone-offset

offset-O

GMT+8; GMT+08:00; UTC-08:00;

X

zone-offset ‘Z’ for zero

offset-X

Z; -08; -0830; -08:30; -083015; -08:30:15;

x

zone-offset

offset-x

+0000; -08; -0830; -08:30; -083015; -08:30:15;

Z

zone-offset

offset-Z

+0000; -0800; -08:00;

p

pad next

pad modifier

1

'

escape for text

delimiter

''

single quote

literal ‘

[

optional section start

]

optional section end

#

reserved for future use

{

reserved for future use

}

reserved for future use


http://www.kler.cn/a/594907.html

相关文章:

  • MATLAB神经网络优化1000个案例算法汇总
  • GaussDB 资源管理指南:冻结、解冻、释放与生命周期控制
  • Rasa(非Pro)开源意图识别聊天机器人本地部署及调试,从零到一构建学习
  • Oracle+11g+笔记(11)-数据库的安全管理
  • Elasticsearch 数据一致性保障机制
  • 【Android Studio】解决遇到的一些问题
  • HarmonyOS开发,解决Kill server failed 报错问题
  • Unity打包的WebGL包打不开问题解决方案,以及WebGL包嵌入至Vue2中的步骤
  • 使用 Hybrids 创建Web Component的操作指南
  • springboot 动态注册swagger docket配置
  • 【总结篇】java多线程,新建线程有几种写法,以及每种写法的优劣势
  • Spring Boot整合Apache BookKeeper教程
  • 数据库:一文掌握 Elasticsearch 的各种指令(Elasticsearch指令备忘)
  • webpack的SplitChunksPlugin和在路由或组件级别进行拆分
  • 生物医药蛋白分子数据采集:支撑大模型训练的技术实践分享
  • leetcode热题100道——两数之和
  • SaaS系统的销售微服务与权限微服务边界设计
  • 进制转换(R转十)(1290. 二进制转换十进制、1292. 十六进制转十进制、1291. 八进制转十进制、1405. 小丽找潜在的素数)
  • 用电子表格语言”写软件”——FILTER函数学习与超级实践
  • 晶鑫股份迈向敏捷BI之路,永洪科技助力启程