elasticsearch日期类型

译自官方文档,原文请戳这里

JSON中没有date类型,因此 es 中的日期可以是:

  • "2015-01-01" "2015/01/01 12:10:30" 这种字符串格式
  • 从开始纪元(1970年1月1日0点) 开始的毫秒数
  • 从开始纪元开始的秒数

es 会自动将时间转换为UTC(你也可以自定义时区 time-zone),并最终存储为一个代表从开始纪元起计算的毫秒数。

对日期的查询会被自动转换为针对此long类型的查询,而聚合之后的查询结果会依据该field指定的格式重新转为String格式。

注意:日期最终都渲染为字符串,即使它们的初始格式在JSON中是long格式。

Date也可以自定义,但如果你没有指定format,es将使用默认值:

"strict_date_optional_time||epoch_millis"

date支持可选的时间戳,具体格式为 strict_date_optional_time 或 milliseconds-since-the-epoch。示例如下:

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type": "date" // 1
        }
      }
    }
  }
}

PUT my_index/_doc/1
{ "date": "2015-01-01" } // 2

PUT my_index/_doc/2
{ "date": "2015-01-01T12:10:30Z" } // 3

PUT my_index/_doc/3
{ "date": 1420070400001 } // 4

GET my_index/_search
{
  "sort": { "date": "asc"} // 5
}

1 使用默认格式

2 使用简单date

3 使用带 time 的 date

4 使用毫秒偏移量

5 sort 返回的日期格式全部都是毫秒偏移量

多日期格式

你可以使用 || 分隔符来指定多个日期格式。es将按顺序进行匹配,直到找到一个能够匹配上的格式。es将用此格式将long转为string。

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

date类型field的参数

date类型的field接受以下参数:

boost提升查询权重。浮点型,默认值 1.0
doc_values是否使用doc_values。如果确定不需要对此field进行排序/聚合,或者使用脚本,可以关闭。默认true
format日期格式。默认 strict_date_optional_time || epoch_millis
locale用于解决月份在各语言中没有统一缩写的问题。默认值为 ROOT
ignore_malformed当设置为true时将忽略错误数字。如果设置为false,遇到错误时将抛出异常并拒绝掉整个document
index如果该字段可以被搜索,请设置为true。默认为true
null_value当输入值为空时,使用该值来代替,必须为format参数格式。默认为null,意味着该字段丢失
store字段值是否应该在_source字段之外存储和检索。默认false。

 

转载于:https://my.oschina.net/landas/blog/2961648

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值