format (日期格式)

JSON 文档中,日期表示为字符串.Elasticsearch 使用一组预先配置的格式来识别和解析这些字符串表示为 milliseconds-since-the-epoch in UTC.

除了内置格式,你可以使用熟悉的 yyyy/MM/dd 语法指定自己的自定义格式.

curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "my_type": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd"
        }
      }
    }
  }
}
'

支持日期值的许多API还支持日期数学表达式,例如 now-1m/d ,即当前时间,减去一个月,向下舍入到最近的一天.

tip

格式设置在相同索引中相同名称的字段要有相同的设置.可以使用 PUT mapping API 在现有字段上更新其值.

Custom date formats (标准的日期格式)

支持完全可定制的日期格式,这些语法 in the Joda docs.

Built In Formats (以格式化构建)

以下大多数日期都有严格的伴随日期,这意味着,本周的年月日必须有前置的零数字才有效.这意味着,像5/11/1这样的日期是无效的,你需要制定完整的日期,例如2005/11/01。所以,你需要指定 strict_date_optional_time(严格的日期选择) 来代替  date_optional_time .

下表列出了支持的所有默认ISO格式:

epoch_millis

一个毫秒的格式化程序.请注意,这个时间戳受 Java Long.MIN_VALUE和 Long.MAX_VALUE限制.

epoch_second

.一个秒的格式化程序.请注意,时间戳受 Java Long.MIN_VALUE和 Long.MAX_VALUE限制.**MAX_VALUE** 除以**1000**(一秒钟的毫秒数).

date_optional_time or strict_date_optional_time

通用 ISO 日期时间解析器,其中日期是必需的,时间是可选的。

Full details here.basic_date

一个对完整日期的格式化,四位数字年份,两位数字的月份,两位数字的日期: yyyMMdd

basic_date_time

一个包含基本日期和时间的格式化程序,通过'T'分割:yyyyMMdd'T'HHmmss.SSSZ.

basic_date_time_no_millis

一个包含基本日期和时间且没有毫秒的格式化程序,通过 ‘T’ 分割:yyyyMMdd'T'HHmmssZ.

basic_ordinal_date

一个用于 ordinal date 的格式化程序,使用四位数字的年份和三位数的日期,yyyyDDD。

basic_ordinal_date_time

一个用于完整的 ordinal 日期和时间的格式化程序,使用四位数的年份和三位数的日期: yyyyDDD'T'HHmmss.SSSZ.

basic_ordinal_date_time_no_millis

一个用于完整的 ordinal 日期和时间且没有毫秒的格式化程序,使用四位数的年份和三位数的日期: yyyyDDD'T'HHmmssZ.

basic_time

一个两位数的小时,两位数的分钟,两位数的秒,三位数的毫秒以及时间偏移量的格式化程序:HHmmss.SSSZ.

basic_time_no_millis

一个两位数的小时,两位数的分钟,两位数的秒以及时间偏移量的格式化程序:HHmmssZ

basic_t_time

一个两位数的小时,两位数的分钟,两位数的秒,三位数的毫秒以及以T为前缀的时区:'T'HHmmss.SSSZ.

basic_t_time_no_millis

一个两位数的小时,两位数的分钟,两位数的秒以及以T为前缀的时区:**'T'HHmmssZ**.

basic_week_date or strict_basic_week_date

一个四位数的weekyear,两位数的周数,一位数的天数:xxxx'W'wwe。

basic_week_date_time or strict_basic_week_date_time

一个包含基础的 weekyear 日期和时间的格式化程序,通过T分割: xxxx'W'wwe'T'HHmmss.SSSZ.

basic_week_date_time_no_millis or strict_basic_week_date_time_no_millis

一个包含基础的 weekyear 日期和时间且不包含毫秒的格式化程序,通过T分割 : xxxx'W'wwe'T'HHmmssZ.

date or strict_date

一个完整日期的格式化程序,四位数的年,两位数的月,两位数的天: **yyyy-MM-dd**.

date_hour or strict_date_hour

一个包含完整日期和两位数的小时的格式化程序: yyyy-MM-dd'T'HH.

date_hour_minute or strict_date_hour_minute

一个包含完整日期,两位数的天数,两位数的分钟的格式化程序:  yyyy-MM-dd'T'HH:mm.

date_hour_minute_second or strict_date_hour_minute_second

一个包含完整日期,两位数的天数,两位数的分钟,两位数的秒数: yyyy-MM-dd'T'HH:mm:ss.

date_hour_minute_second_fraction or strict_date_hour_minute_second_fraction

一个包含完整日期,两位数的小时数,两位数的分钟数,两位数的秒数,三位数的秒的分数:yyyy-MM-dd'T'HH:mm:ss.SSS.

date_hour_minute_second_millis or strict_date_hour_minute_second_millis

一个包含完整日期,两位数的小时,两位数的分钟,两位数的秒数,三位数的秒的分数: yyyy-MM-dd'T'HH:mm:ss.SSS.

date_time or strict_date_time

一个包含完整日期和时间,通过T分割的格式化程序: yyyy-MM-dd'T'HH:mm:ss.SSSZZ.

date_time_no_millis or strict_date_time_no_millis

一个包含完整日期和时间且没有毫秒的,通过T分割的格式化程序: yyyy-MM-dd'T'HH:mm:ssZZ.

hour or strict_hour

一个两位数的小时数的格式化程序: HH

hour_minute or strict_hour_minute

一个两位数的小时数和两位数的分钟数:HH:mm.

hour_minute_second or strict_hour_minute_second

一个两位数的小时数,两位数的分钟数和两位数的秒数:HH:mm:ss.

hour_minute_second_fraction or strict_hour_minute_second_fraction

一个两位数的小时数,两位数的分钟数,两位数的秒数,三位数的秒的分数:HH:mm:ss.SSS.

hour_minute_second_millis or strict_hour_minute_second_millis

一个两位数的小时数,两位数的分钟数,两位数的秒数,三位数的秒的分数: HH:mm:ss.SSS.

ordinal_date or strict_ordinal_date

一个完整日期的格式化程序,使用四位数的年数和三位数年的天数:yyyy-DDD.

ordinal_date_time or strict_ordinal_date_time

一个完整ordinal 日期和时间的格式化程序,使用四位数的年数和三位数的天数:yyyy-DDD'T'HH:mm:ss.SSSZZ.

ordinal_date_time_no_millis or strict_ordinal_date_time_no_millis

一个完整日期和时间没有毫秒的格式化程序,使用四位数的年份和三位数的年的天数: yyyy-DDD'T'HH:mm:ssZZ.

time or strict_time

一个两位数的天数,两位数的小时,两位数的秒,三位数的秒的分数,以及时间偏移量:HH:mm:ss.SSSZZ.

time_no_millis or strict_time_no_millis

一个两位数的小时,两位数的分钟,两位数的秒以及时间偏移量:HH:mm:ssZZ.

t_time or strict_t_time

一个两位数的小时,两位数的分钟,两位数的秒,三位数的秒的分数以及以T为前缀的时间偏移量: 'T'HH:mm:ss.SSSZZ.

t_time_no_millis or strict_t_time_no_millis

一个两位数的小时,两位数的分钟,两位数的秒以及以T为前缀的时间偏移量:'T'HH:mm:ssZZ.

week_date or strict_week_date

一个完整日其的格式化程序,四位数的weekyear,两位数的周数,一位数的天数: xxxx-'W'ww-e.

week_date_time or strict_week_date_time

一个包含完整weekyear 日期和时间的格式化程序,通过T进行分割:xxxx-'W'ww-e'T'HH:mm:ss.SSSZZ.

week_date_time_no_millis or strict_week_date_time_no_millis

一个包含完整 weekyear 日期和时间没有毫秒,以T分割的格式化程序: xxxx-'W'ww-e'T'HH:mm:ssZZ.

weekyear or strict_weekyear

一个四位数的 weekyear 的格式化程序:xxxx

weekyear_week or strict_weekyear_week

一个四位数的 weekyear 和两位数的周数:xxxx-'W'ww.

weekyear_week_day or strict_weekyear_week_day

一个四位数的weekyear 两位数的周数,一位数的天数: xxxx-'W'ww-e.

year or strict_year

一个四位数年份的格式化程序:yyyy.

year_month or strict_year_month

一个四位数年份和两位数月份的格式化程序: yyyy-MM.

year_month_day or strict_year_month_day

一个四位数的年份和两位数的月份,两位数的天数的格式化程序:yyyy-MM-dd.