【问题标题】:elasticsearch failed to parse dateelasticsearch 解析日期失败
【发布时间】:2015-03-18 12:28:29
【问题描述】:

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

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

请告诉我发生了什么事。

【问题讨论】:

    标签: elasticsearch elasticsearch-jdbc-river


    【解决方案1】:

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

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

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

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

    因此,如果您遇到此问题,请确保 ES 中没有可能阻止您为新文档编制索引的索引。

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

    【讨论】:

    • 为我工作。但是,仍然需要删除并重新创建索引,因为如果尝试更新映射,我会收到错误。
    【解决方案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"}
    

    【讨论】:

    • 谢谢 Vineeth,它仍然抱怨: 引起:java.lang.IllegalArgumentException:无效格式:“2015-03-31T16:25:56.000-07:00”在“T16:25”格式错误:56.000-07:00"
    • 我给了 curl -XPUT 命令将索引文档放入 ES 并给出了这个:"handshaketime":{"type":"date","format":"YYYY-MM-dd'" 'T'"'HH:mm:ss.SSSZ"},但我仍然得到同样的错误?似乎 ES 完全忽略了格式,因为它至少应该抱怨我们的格式错误……对吧?
    • 并且索引输出(在浏览器中)显示如下:"handshaketime":{"type":"date","format":"YYYY-MM-dd'T'HH:mm :ss.SSSZ"},所以它读取格式但似乎不适用于我们的时间。
    • 你可以试试这个格式YYYY-MM-dd'T'HH:mm:ss.SSSZZ
    • 我用这个“格式”:“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”就可以了。
    猜你喜欢
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 2013-10-03
    相关资源
    最近更新 更多