本文转自:[link]https://blog.csdn.net/lijingjingchn/article/details/100576088
一、date是es中的基础数据类型,在es内部其实存储的时间戳,但是我们经常会把时间转成字符串存储,那么数据是怎么识别的呢。注意:官网建议时间按照长整型存储,节省一定的空间。
如果我们在mapping设置字段的typedate,则写入数据的格式是按照默认的方式识别-strict_date_optional_time||epoch_millis,这表明只接受符合strict_date_optional_time格式的字符串值,或者long型数字,否则会写入失败。经过测试strict_date_optional_time是如下其中一种格式都可以,并不支持我们常用的格式 yyyy-MM-dd HH:mm:ss

  • yyyy-MM-dd
  • yyyy/MM/dd
  • yyyy-MM-ddTHH:mm:ss
  • yyyy/MM/dd HH:mm:ss
  • yyyy-MM-ddTHH:mm:ss.SSS

所以如果我们写入上面的格式的字符串,es默认会把该字段设置为date类型

二、但是能不能支持我们常用的时间格式呢?答案是当然可以,需要在mapping设置字段时候加上format参数,用于指定插入的时间格式,但是如果指定固定的格式,则使用其他格式的时候将会失败,但是也是可以多种格式组合在一起。

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "updated_date": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}

一般我们写入是什么格式,展示的时候也是什么格式

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐