6

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

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

请告诉我发生了什么事。

4

2 回答 2

7

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

最后,我看到了一篇文章,描述了删除 ES 中的所有索引并重新提交我们的索引/映射文档(又名 clean-slating)。瞧!它起作用了,实际上,如果我只给出以下内容,它就起作用了:

"handshaketime":{"type":"date", "format": "dateOptionalTime"}

甚至没有我和@Vineeth 讨论过的自定义格式!!

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

感谢您尝试解决此问题@Vineeth。

于 2015-03-18T17:49:37.000 回答
2

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

 {"type":"date","format":"YYYY-MM-dd'T'HH:mm:ss.SSSZ"}

如果你使用的是 shell 脚本,你需要给它如下 -

 {"type":"date","format":"YYYY-MM-dd'"'T'"'HH:mm:ss.SSSZ"}
于 2015-03-18T13:35:24.887 回答