elasticsearch无法解析日期

时间:2015-03-18 12:28:30

标签: elasticsearch elasticsearch-jdbc-river

我有以下日期的索引定义:

"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。

请告诉我发生了什么事。

2 个答案:

答案 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"}