ElasticSearch日期映射

时间:2014-07-03 20:34:55

标签: java date elasticsearch

我想映射new Date().toString()

中出现的以下日期字符串

Thu Jul 03 19:17:19 CEST 2014但ElasticSearch总是给我Errormessage Invalid format: "Thu Jul 03 19:17:19 CEST 2014" is malformed at "CEST 2014",我不知道出了什么问题。 这是测试类型的映射

{
    "properties" : {
      "postDate" : {
        "type" : "date",
        "format" : "EEE MMM dd HH:mm:ss z yyyy"
      }
    }
}

我认为它有正确的模式。我甚至试图增加' z'的数量,但是同样的错误。 那么有一个解决方案,或者我必须找到一个不同的approch。

1 个答案:

答案 0 :(得分:4)

您将需要一种不同的方法,因为Elasticsearch使用的基础日期解析软件无法解析" CEST"或其他短格式时区,因为字符串不是唯一的。

从Elasticsearch文档中,您可以看到它使用Joda进行日期解析:

  

日期解析使用Joda。如果没有,则使用默认日期解析   指定的格式是ISODateTimeFormat.dateOptionalTimeParser。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html

然而Joda遇到了问题" CEST"和其他短格式时区:

http://comments.gmane.org/gmane.comp.java.joda-time.user/1385

有一些与此相关的讨论,但它更侧重于增加对CEST"的支持。对于logstash,因为它解析然后将数据加载到Elasticsearch:

https://github.com/elasticsearch/logstash/pull/1378