JSON中没有date类型,es中的date可以由下面3种方式表示:

①格式化的date字符串,例如"2018-01-01"或者"2018-01-01 12:00:00"

②一个long型的数字,代表从1970年1月1号0点到现在的毫秒数

③一个integer型的数字,代表从1970年1月1号0点到现在的秒数

在es内部,date被转为UTC,并被存储为一个长整型数字,代表从1970年1月1号0点到现在的毫秒数

date类型字段上的查询会在内部被转为对long型值的范围查询,查询的结果类型是字符串。

假如插入的时候,值是"2018-01-01",则返回"2018-01-01"

假如插入的时候,值是"2018-01-01 12:00:00",则返回"2018-01-01 12:00:00"

假如插入的时候,值是1514736000000,则返回"1514736000000"。(进去是long型,出来是String型)

date格式可以在put mapping的时候用 format 参数指定,如果不指定的话,则启用默认格式,是"strict_date_optional_time||epoch_millis"。这表明只接受符合"strict_date_optional_time"格式的字符串值,或者long型数字。

strict_date_optional_time是date_optional_time的严格级别,这个严格指的是年份、月份、天必须分别以4位、2位、2位表示,不足两位的话第一位需用0补齐。不满足这个格式的日期字符串是放不进es中的。

date-opt-time = date-element [‘T’ [time-element] [offset]]
date-element = std-date-element | ord-date-element | week-date-element
std-date-element = yyyy [’-’ MM [’-’ dd]]
ord-date-element = yyyy [’-’ DDD]
week-date-element = xxxx ‘-W’ ww [’-’ e]
time-element = HH [minute-element] | [fraction]
minute-element = ‘:’ mm [second-element] | [fraction]
second-element = ‘:’ ss [fraction]
fraction = (’.’ | ‘,’) digit+

实测,仅支持"yyyy-MM-dd"、“yyyyMMdd”、“yyyyMMddHHmmss”、“yyyy-MM-ddTHH:mm:ss”、“yyyy-MM-ddTHH:mm:ss.SSS”、"yyyy-MM-ddTHH:mm:ss.SSSZ"格式,不支持常用的"yyyy-MM-dd HH:mm:ss"等格式。注意,“T"和"Z"是固定的字符,在获取"yyyy-MM-ddTHH:mm:ss”、“yyyy-MM-ddTHH:mm:ss.SSS”、"yyyy-MM-ddTHH:mm:ss.SSSZ"格式字符串值时,不能直接以前面格式格式化date,而是需要多次格式化date并且拼接得到。

epoch_millis约束值必须大于等于Long.MIN_VALUE,小于等于Long.MAX_VALUE

date类型字段除了type参数必须指定为date外,还有一个常用的参数 format 。可以通过该参数来显式指定es接受的date格式,如果有多个的话,多个date格式需用||分隔。之后index/create/update操作时,将依次匹配,如果匹配到合适的格式,则会操作成功,并且查询时,该文档该字段也会以该格式展示。否则,操作不成功。如

PUT my_index
{
“mappings”: {
“_doc”: {
“properties”: {
“updated_date”: {
“type”: “date”,
“format”: “yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis”
}
}
}
}
}
java操作es date类型最佳实践:

创建索引时指定date类型format为"yyyy-MM-dd HH:mm:ss",限制只能接受"yyyy-MM-dd HH:mm:ss"格式的date字符串

在代码中把Date实例或者LocalDateTime实例先转化为 "yyyy-MM-dd HH:mm:ss"格式的字符串后再存进去,这样取出来时也是"yyyy-MM-dd HH:mm:ss"格式。

elasticsearch date格式问题相关推荐

  1. Oracle 默认时间格式 Date格式转换

    默认时间格式: 1.Oracle的日期格式 Oracle缺省的时间格式即时间数据的显示形式,与所使用的字符集有关.一般显示年月日,而不显示时分秒. 例如,使用us7ascii字符集(或者是其他的英语字 ...

  2. Java中将String格式的标准时间字符串转换为Date格式的方法

    场景 前端在往后端传递时间参数时,传递的是标准时间格式的字符串. 比如下面的lxyf参数 怎样将其转换为Date格式. 注: 博客: https://blog.csdn.net/badao_liuma ...

  3. 解决JSON中文乱码以及JSON处理Date格式

    项目启动保错(jackson版本问题导致项目启动失败) 出现这个错误是因为jackson依赖和springboot依赖版本有冲突,把jsckson的依赖版本从2.9.8换成 2.11.0即可 9. J ...

  4. 数据库毫秒转换成date格式

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式. 一. 在MySQL中,有内置的函数from_unixtime ...

  5. date的oracle格式,Oracle的默认date格式是YYYY-MM-DD,为什么?

    如果使用此查询为您的数据仓库生成input文件,则需要适当地格式化数据. 实质上,在这种情况下,您将date(具有时间分量)转换为string. 您需要明确地格式化您的string或更改您的nls_d ...

  6. Elasticsearch: date时间数据格式踩过的坑

    1. 默认情况下 时间格式是可以自定义的,但是如果没有指定一个格式,它将使用默认的格式(时间格式里面必须包含年份,并且时间中的时分秒是可选的),例如格式:yyyy-MM-dd'T'HH:mm:ss.S ...

  7. Elasticsearch Date类型,时间存储相关说明

    从昨晚开始,到今天中午之前,一直在纠结时间存储问题,昨晚是纠结时间取出来的问题. 其实我的想法很简单,我就想java.util.Date  存储到 Elasticsearch  ,然后从 Elasti ...

  8. elasticsearch date及timezone总结

    首先elasticsearch 所有日期保存都是utc,不能修改. elasticsearch 会识别多种日期,默认支持的日期格式请参看https://www.elastic.co/guide/en/ ...

  9. java.sql.date格式化_如何将java.sql.date格式化为这种格式:“MM-dd-yyyy”?

    我需要以下面的格式"MM-dd-yyyy"获取 java.sql.date,但是我需要它来保留java.sql.date所以我可以将它作为日期字段放入表中.因此,格式化后它不能是S ...

最新文章

  1. 探讨.NET Core数据进行3DES加密和解密问题
  2. Python操作Excel——win32com模块和xlrd+xlwt+xlutils组合
  3. spring事务源码解析
  4. java网上商城外文翻译_英语文献翻译网上商城java.doc
  5. [转] 寻找第k大的数
  6. Android编程中利用AudioTrack播放PCM数据在音频的最后出现重复回声现象的解决方案
  7. 计算机和自动化结合的专业,自动化转计算机?你可以选择这个专业!
  8. Linux系统初学者的常见问题解决集结
  9. uniapp debug能打开release不行_盘点在 Release 下由循环体优化所产生的不确定性 Bug...
  10. 兴趣爱好-常用的10种算法
  11. OBS Studio录制腾讯会议
  12. webstorm识别 ftl文件
  13. 优酷中转码是什么意思
  14. css压缩有啥好处呢?
  15. android测试内存的软件下载,华为p10内存测试软件(androbench) v5.0.1 免费版
  16. WEB端支付宝接入----统一收单下单并支付页面接口
  17. 【Atlas300T训练产品】【bert模型加载功能】推理过程ckpt中部分参数未加载
  18. smm整合first
  19. 【减肥】个人科学减肥大致原理记录
  20. edge插件默认下载位置

热门文章

  1. 一文梳理2019年腾讯广告算法大赛冠军方案
  2. 10个问题看透Transformer
  3. OpenCV再升级!修改一行代码,将图像匹配效果提升14%!
  4. CBNet和DetectoRS:COCO数据集霸榜模型
  5. 你用iPhone打游戏,有人却用iPhone来训练神经网络
  6. 博士毕业后就被双一流高校直聘为教授,这位90后“土博”是怎么做到的?
  7. 24招加速你的Python,超级实用!
  8. 2019天猫双11成交额达2684亿,盘点今年双11有哪些亮点!
  9. kazoo源码分析:Zookeeper客户端start概述
  10. 神经网络基础及逻辑回归实现