我有以下日期的索引定义:
"handshaketime" : {"type":"date","format":"YYYY-MM-ddTHH:mm:ss.SSSZ"}
实际日期是这种形式:
"handshaketime":"2015-04-07T10:43:03.000-07:00"
我已经指定来自DB的日期具有上述格式,但elasticsearch仍然会给我以下错误。
Caused by: org.elasticsearch.index.mapper.MapperParsingException: failed to
parse date field [2015-04-07T10:43:03.000-07:00], tried both date format
[YYYY-MM-dd HH:mm:ss], and timestamp number with locale []
我正在使用带有jdbc_river 1.4.0.10的elasticsearch 1.4.4。
请告诉我发生了什么事。
答案 0 :(得分:5)
在尝试修复此错误时,尽管@Vineeth提供了相同的结果,但我仍然遇到了相同的结果。我指出他,由于某种原因,ES没有显示我们提供的格式,而是一遍又一遍地给出相同的错误。
最后,我遇到了一篇文章,描述了删除ES中的所有索引并重新提交我们的索引/映射文档(也称为清理)。瞧!它有效,事实上,如果我只是给出以下内容它是有效的:
"handshaketime":{"type":"date", "format": "dateOptionalTime"}
甚至不是我和@Vineeth讨论的自定义格式!!
因此,如果您正在努力解决此问题,请确保ES中没有可能阻止您索引新文档的索引。
感谢您尝试对此问题进行排序@Vineeth。
答案 1 :(得分:1)
你必须按如下方式给予 - T应该有单引号,因为它不是时间标识符。
{"type":"date","format":"YYYY-MM-dd'T'HH:mm:ss.SSSZ"}
如果您使用的是shell脚本,则需要按如下方式提供 -
{"type":"date","format":"YYYY-MM-dd'"'T'"'HH:mm:ss.SSSZ"}