当前位置:网站首页>ES日期时间格式化参数集锦
ES日期时间格式化参数集锦
2022-08-08 06:28:00 【身前一尺是我的世界】
目录
date_optional_time或者strict_date_optional_time
basic_date_time(yyyyMMdd'T'HHmmss.SSSZ格式)
basic_date_time_no_millis(yyyyMMdd'T'HHmmssZ格式)
basic_ordinal_date_time(yyyyDDD'T'HHmmss.SSSZ格式)
basic_ordinal_date_time_no_millis(yyyyDDD'T'HHmmssZ格式)
basic_time_no_millis(HHmmssZ格式)
date_hour_minute_second或者strict_date_hour_minute_second
目标
熟悉自定义日期格式,掌握内置日期格式参数。
ES版本信息
7.17.5
官方文档
formathttps://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping-date-format.html
相关术语
格式化
在JSON文档中,日期表示为字符串。Elasticsearch使用一组预配置的格式来识别这些字符串并将其解析为一个long值,该值表示UTC中的毫秒数。
自定义格式
根据需求要求来自定义日期和时间格式。
内置格式
使用ES自带的参数来规范时间和日期。
严格的日期格式
- 年使用4位数字;
- 月使用2位数字;
- 日使用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(毫秒级时间戳格式)
作用:自纪元以来的毫秒数的格式化程序。
PUT /epoch_millis_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "epoch_millis"
}
}
}
}
PUT /epoch_millis_db/_doc/1
{
"timeTest": "1659801198",
"timeTest2": "1659799518",
"timeTest3": "2020-01-01",
"timeTest4": "2020/01/01"
}
#只有timeTest2不是date类型。
GET /epoch_millis_db/_mapping
epoch_second(秒级时间戳格式)
作用
自纪元以来的秒数的格式化程序。
PUT /epoch_second_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "epoch_second"
}
}
}
}
PUT /epoch_second_db/_doc/1
{
"timeTest": "1659801198",
"timeTest2": "1659799518",
"timeTest3": "2020-01-01",
"timeTest4": "2020/01/01"
}
#只有timeTest2不是date类型。
GET /epoch_second_db/_mapping
date_optional_time或者strict_date_optional_time
date_optional_time作用
一个通用的ISO日期时间解析器,必须至少包括年份。格式yyyy-MM-dd'T'HH:mm:ss.SSSZ或 yyyy-MM-dd。
strict_date_optional_time作用
一个通用的ISO日期时间解析器,必须至少包括年份。要求严格日期格式。格式yyyy-MM-dd'T'HH:mm:ss.SSSZ或 yyyy-MM-dd。
PUT /date_optional_time_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "date_optional_time"
},
"timeTest2": {
"type": "date",
"format": "date_optional_time"
},
"timeTest3": {
"type": "date",
"format": "strict_date_optional_time"
},
"timeTest4": {
"type": "date",
"format": "strict_date_optional_time"
},
"timeTest5": {
"type": "date",
"format": "strict_date_optional_time"
}
}
}
}
GET /date_optional_time_db/_mapping
#timeTest2和timeTest4:东八区(北京时间)2022年5月3日下午5点30分8秒
#timeTest5:西五区2022年5月3日下午5点30分8秒91纳秒
PUT /date_optional_time_db/_doc/1
{
"timeTest": "22-05-03",
"timeTest2": "22-5-3T17:30:08+08:00",
"timeTest3": "2004-05-03T17:30:08",
"timeTest4": "2022-05-03T17:30:08+08:00",
"timeTest5": "2022-05-03T17:30:08.91-05:00"
}
basic_date(yyyyMMdd格式)
作用
约束字段格式必须是yyyyMMdd类型。
PUT /basic_date_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_date"
}
}
}
}
GET /basic_date_db/_mapping
PUT /basic_date_db/_doc/1
{
"timeTest": "20220503"
}
basic_date_time(yyyyMMdd'T'HHmmss.SSSZ格式)
作用
约束字段格式必须是yyyyMMdd'T'HHmmss.SSSZ类型。'T'是日期和时间的分隔符。
PUT /basic_date_time_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_date_time"
}
}
}
}
GET /basic_date_time_db/_mapping
PUT /basic_date_time_db/_doc/1
{
"timeTest": "20220503T120228.33+08:00"
}
basic_date_time_no_millis(yyyyMMdd'T'HHmmssZ格式)
PUT /basic_date_time_no_millis_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_date_time_no_millis"
}
}
}
}
GET /basic_date_time_no_millis_db/_mapping
PUT /basic_date_time_no_millis_db/_doc/1
{
"timeTest": "20220503T120228+08:00"
}
basic_ordinal_date(yyyyDDD格式)
作用
描述某年的第几天。
PUT /basic_ordinal_date_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_ordinal_date"
}
}
}
}
GET /basic_ordinal_date_db/_mapping
#2022年第75天
PUT /basic_ordinal_date_db/_doc/1
{
"timeTest": "2022075"
}
basic_ordinal_date_time(yyyyDDD'T'HHmmss.SSSZ格式)
作用
描述某年的第几天,精确到纳秒。
PUT /basic_ordinal_date_time_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_ordinal_date_time"
}
}
}
}
GET /basic_ordinal_date_time_db/_mapping
#2022年第75天
PUT /basic_ordinal_date_time_db/_doc/1
{
"timeTest": "2022075T122345.466444+08:00"
}
basic_ordinal_date_time_no_millis(yyyyDDD'T'HHmmssZ格式)
作用
描述某年的第几天,精确到秒。
PUT /basic_ordinal_date_time_no_millis_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_ordinal_date_time_no_millis"
}
}
}
}
GET /basic_ordinal_date_time_no_millis_db/_mapping
#2022年第75天
PUT /basic_ordinal_date_time_no_millis_db/_doc/1
{
"timeTest": "2022075T122345+08:00"
}
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
.
PUT /basic_time_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_time"
}
}
}
}
GET /basic_time_db/_mapping
#12点23分45秒999999999纳秒(东八区)
PUT /basic_time_db/_doc/1
{
"timeTest": "122345.999999999+08:00"
}
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
.
PUT /basic_t_time_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "basic_t_time"
}
}
}
}
GET /basic_t_time_db/_mapping
#12点23分45秒999999999纳秒(东八区)
PUT /basic_t_time_db/_doc/1
{
"timeTest": "T122345.999999999+08:00"
}
date或者strict_date
作用
约束日期格式为yyyy-MM-dd。其中strict_date表示严格约束。
PUT /date_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "date"
},
"timeTest2": {
"type": "date",
"format": "strict_date"
}
}
}
}
GET /date_db/_mapping
PUT /date_db/_doc/1
{
"timeTest": "22-1-1",
"timeTest2": "2022-01-01"
}
date_hour_minute_second或者strict_date_hour_minute_second
作用
约束日期格式为yyyy-MM-dd'T'HH:mm:ss。其中strict_date_hour_minute_second表示严格约束。
PUT /date_hour_minute_second_db
{
"mappings": {
"properties": {
"timeTest": {
"type": "date",
"format": "date_hour_minute_second"
},
"timeTest2": {
"type": "date",
"format": "strict_date_hour_minute_second"
}
}
}
}
GET /date_hour_minute_second_db/_mapping
PUT /date_hour_minute_second_db/_doc/1
{
"timeTest": "22-1-1T12:23:12",
"timeTest2": "2022-01-01T12:23:12"
}
自定义格式示例
yyyy-MM-dd HH:mm:ss格式
PUT /stu_db
{
"mappings": {
"properties": {
"createTime":{
"type":"date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
}
GET /stu_db/_mapping
边栏推荐
- 网络安全笔记第一天day1
- 每日一题Day5
- Code and ideas for implementing perpetual calendar in C language (detailed tutorial)
- 论文解读:《Mouse4mC-BGRU:用于预测小鼠基因组中DNA N4-甲基胞嘧啶位点的深度学习》
- ExecutionEngineException: String conversion error: Illegal byte sequence encounted in the input.
- 用栈模拟队列
- Problems when signed and unsigned numbers are involved in operations
- kubeadm init cannot find network namespace 错误
- 排序,欸嘿,排序
- 性能测试------LoadRunner
猜你喜欢
随机推荐
【Android安全】Binder解析
webAPI
The code in Unity HDRP dynamically modifies the skybox and other environment parameters
Golang 简单的读负载均衡
Properties集合的介绍和使用
正则表达式入门要点知识总结
MySQL的DDL和DML
【Android安全】Kotlin基础
List、Set、Map、Queue、Deque、Stack遍历方式总结
【服务器运维】忘记XShell 服务器口令
使用js写一个2048
By using the fgets () the number of rows in the statistics file and use the fgets ()/fputs () copy files
minikube addons enable ingress 启动错误
基于FTP协议的文件上传与下载
golang 服务诡异499、504网络故障排查
每日一题47-48
栈-实现一个简单的静态栈
每日一题day44-45-46
超大Excel文件的写入
论文解读:iDRNA-ITF:基于诱导和转移框架识别蛋白质中的DNA和RNA结合残基