格式参数(Format)

Format 参数 #

format 参数指定日期字段的解析格式。Easysearch 内置了多种日期格式,也支持自定义格式字符串。

相关指南(先读这些) #

基本用法 #

PUT my-index
{
  "mappings": {
    "properties": {
      "created_at": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

多格式支持 #

使用 || 分隔符可以指定多个格式,Easysearch 会依次尝试每种格式进行解析:

"created_at": {
  "type": "date",
  "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}

内置日期格式 #

格式说明示例
epoch_millis毫秒时间戳1618000000000
epoch_second秒时间戳1618000000
date_optional_time / strict_date_optional_timeISO 8601 日期,时间部分可选2021-04-10T08:00:00Z
basic_dateyyyyMMdd20210410
basic_date_timeyyyyMMdd’T’HHmmss.SSSZ20210410T080000.000Z
dateyyyy-MM-dd2021-04-10
date_hour_minute_secondyyyy-MM-dd’T’HH:mm:ss2021-04-10T08:00:00
date_timeyyyy-MM-dd’T’HH:mm:ss.SSSZ2021-04-10T08:00:00.000Z
hour_minute_secondHH:mm:ss08:00:00

完整的内置格式列表请参考 Date 字段类型

自定义格式字符串 #

符号含义示例
yyyy四位年份2021
MM两位月份04
dd两位日期10
HH24 小时制小时08
mm分钟30
ss45
SSS毫秒123
Z时区偏移+0800

默认格式 #

如果不指定 format,日期字段默认使用 strict_date_optional_time||epoch_millis,这意味着它接受:

  • ISO 8601 格式的日期/日期时间字符串
  • 毫秒时间戳

注意事项 #

  • format 参数在索引创建后无法修改,需要重建索引
  • 写入的日期值必须匹配指定的某一种格式,否则会报解析错误
  • 如果需要同时接受多种格式,使用 || 分隔
  • strict_ 前缀表示严格模式,不允许省略前导零(如月份 4 必须写为 04