6

我正在索引推文,并希望将 created_at 字段映射到日期。示例日期如下所示:

'created_at': 'Wed Sep 21 05:19:16 +0000 2011'

使用 JODA 时间格式,我发现是:

"format" : "EEE MMM dd HH:mm:ss +SSSS yyyy",

但是,当尝试索引新推文时,我收到以下错误:

{u'status': 400, u'error': u'RemoteTransportException[[Rattler][inet[/192.155.85.243:9301]][index]]; nested: MapperParsingException[Failed to parse [created_at]]; nested: MapperParsingException[failed to parse date field [2013-04-30 20:34:43], tried both date format [yyyyMMdd HH:mm:ss], and timestamp number]; nested: IllegalArgumentException[Invalid format: "2013-04-30 20:34:43" is malformed at "-04-30 20:34:43"]; '}

我尝试更改要使用的日期格式

yyyy-MM-dd HH:mm:ss
EEE, dd MMM yyyy HH:mm:ss Z
EEE dd MMM yyyy HH:mm:ss Z
EEE MMM dd HH:mm:ss +0000 yyyy

,以及其他几个变化,只是看到,没有运气。我正在使用以下调用来创建初始推文文档:

curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
    "tweet" : {
        "properties" : {
            "created_at" : {"type" : "date", "format" : "EEE dd MMM yyyy HH:mm:ss Z"}
        }
    }
}'

任何帮助是极大的赞赏!

4

1 回答 1

10

您指定的 Joda 时间格式不完全正确。S 代表秒的分数,而不是您想要的时区。“+”号也包含在时区解析器中。

我设法使用此格式说明符在 elasticsearch 中解析 twitter 日期格式:

"format": "EE MMM d HH:mm:ss Z yyyy"
于 2013-06-16T17:13:32.280 回答