ElasticSearch字段类型-date

ElasticSearch中date类型的使用和别的类型稍有差别,本篇就讲下date类型。

date类型在ElasticSearch中都是以时间戳(单位:毫秒)的格式存储的,但在输入时不是必须得时间戳形式,默认支持格式为 [ “strict_date_optional_time”,”yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z”]。

设置格式

上面提到默认支持的格式是 [ “strict_date_optional_time”,”yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z”],然后在实际应用中,时间字段不一定都是这样的格式。一个方法是把时间字段都转成这样格式,但这样会有额外开销。另一个方法就是在mapping文件中设置date字段的格式,也是比较推荐的方式。

假设我们有一个person的对象,其中有个字段是birthday是date类型,我们可以在mapping文件中设置birthday的格式:

上面的设置意思是birthday的字段可以接受”yyyy-MM-dd HH:mm:ss”或”yyyy-MM-dd”或时间戳,这3种格式字符串。

按时间范围搜索

date类型的字段如果要按时间范围搜索,和其它字段的稍有区别。

在写查询语句时,要指定”format”,同时要指定”time_zone”,否则会按默认的时区来算时间。

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注