es中Date类型需要注意的问题

  1. es的Date类型默认支持的格式是有限的。
    仅支持格式:
"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"

若要使用上面这种格式,则需要在文档建立时就指定该Date类型接收的格式format:

PUT /crazy
{
  "mappings":{
    "hetaoyes":{
      "properties":{
        "uploadTime":{
          "type":"date",
          "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
       
      }
    }
  }
}

这里指定了3种format,所以上传的日期只需符合这三种的任意一种即可。

  1. 利用spring data elasticsearch插入日期格式数据的时候,一定要注意日期格式的转换,除此之外,还有日期时间存储的时候要加上8小时,es计算时间跟我们的时间会相差八小时:
具体字段注解如下:

@Field(type = FieldType.Date, format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")// 指定存储格式
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd HH:mm:ss", timezone ="GMT+8")// 数据格式转换,并加上8小时进行存储
private String uploadTime;//这里类型是String,进入es就转换为Date类型

设置当前时间为上传时间(UploadTime):
setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//括号内为String类型

参考博客:
https://www.cnblogs.com/koushr/p/9498888.html
https://www.jianshu.com/p/cb2e18cfbaab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值