elasticsearch无法解析日期

BoC*_*ode 6 elasticsearch elasticsearch-jdbc-river

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

"handshaketime" : {"type":"date","format":"YYYY-MM-ddTHH:mm:ss.SSSZ"}
Run Code Online (Sandbox Code Playgroud)

实际日期是这种形式:

"handshaketime":"2015-04-07T10:43:03.000-07:00"
Run Code Online (Sandbox Code Playgroud)

我已经指定来自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 []
Run Code Online (Sandbox Code Playgroud)

我正在使用带有jdbc_river 1.4.0.10的elasticsearch 1.4.4.

请告诉我发生了什么事.

BoC*_*ode 5

在尝试修复此错误时,尽管@Vineeth提供了相同的结果,但我仍然遇到了相同的结果.我指出他,由于某种原因,ES没有显示我们提供的格式,而是一遍又一遍地给出相同的错误.

最后,我遇到了一篇文章,描述了删除ES中的所有索引并重新提交我们的索引/映射文档(又称清理).瞧!它有效,事实上,如果我只是给出以下内容它是有效的:

"handshaketime":{"type":"date", "format": "dateOptionalTime"}
Run Code Online (Sandbox Code Playgroud)

甚至不是我和@Vineeth讨论的自定义格式!!

因此,如果您正在努力解决此问题,请确保ES中没有可能阻止您索引新文档的索引.

感谢您试图对此问题进行排序@Vineeth.


Vin*_*han 2

您必须按如下方式给出 - T 应该有单引号,因为它不是时间标识符。

 {"type":"date","format":"YYYY-MM-dd'T'HH:mm:ss.SSSZ"}
Run Code Online (Sandbox Code Playgroud)

如果您使用 shell 脚本,则需要按如下方式给出 -

 {"type":"date","format":"YYYY-MM-dd'"'T'"'HH:mm:ss.SSSZ"}
Run Code Online (Sandbox Code Playgroud)