Elasticsearch时间类型使用小记

    最近在工作中需要使用Elasticsearch来存储部分用户数据,开始写入数据的时候没有主动设置mapping这个东西。后来数据录入一部分开始查询,发现时间字段的范围比较和预期不一致,看mapping里面的定义为text。可能当字符串来比较了,然后就去搜索“update mapping”,看到“Other than where documented, existing field mappings cannot be updated”,这就悲剧了!

    看了一圈都是重建索引,然后冲导入数据。这个以后看看底层吧,来理解下。然后在重建索引之后导数据,碰到date字段的问题。{"type":"illegal_argument_exception","reason":"Invalid format: \"2018-02-03 15:26:49\" is malformed at \" 15:26:49\""}}。就是非法的时间格式,看了看是需要UTC格式的时间格式。所以解决的方式就是把对应的字段给转换为utc的模式,然后再次写入就ok了。

    不过可以用时间戳来存储时间,这样整形数的比较查询就比较简单了。在开始创建mapping阶段,把date字段设置为Int即可。依然想用data类型,在mapping阶段指定具体的date日期的格式,详细格式参考官网

转载于:https://my.oschina.net/xiaopei/blog/3036074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值