弹性日期格式

时间:2019-04-15 18:40:34

标签: elasticsearch

我已在模板中指定了映射信息,如下所示:

    "createdDate": {
              "type": "date",
              "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis||EEE MMM dd HH:mm:ss Z YYYY||dd MMM yyyy HH:mm:ss zzz"
            },
"expirationDate": {
              "type": "date",
              "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis||EEE MMM dd HH:mm:ss Z YYYY||dd MMM yyyy HH:mm:ss zzz"
            }

当我尝试将文档插入索引时,出现以下错误。

PUT my_index/MyDocType/5c7ab034-5de3-4401-8b46-7f8158618b68
{
  "uuid": "5c7ab034-5de3-4401-8b46-7f8158618b68",
  "createdDate": "15 Apr 2019 14:10:10 EDT",
  "expirationDate": "10 Oct 2019 00:00:00 EDT"

}

这是我遇到的错误:

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "failed to parse [createdDate]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "failed to parse [createdDate]",
    "caused_by": {
      "type": "illegal_argument_exception",
      "reason": "Invalid format: \"15 Apr 2019 14:10:10 EDT\" is malformed at \" Apr 2019 14:10:10 EDT\""
    }
  },
  "status": 400
}

我可以使用以下命令解析字符串值,而不会出现任何问题。不确定为什么Elastic在解析日期字符串的月份部分时会抱怨!!

SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss zzz");

1 个答案:

答案 0 :(得分:1)

如本https://github.com/vitaly-t/pg-promise-demo中所述,以下是zZ的含义

z time zone                    text               Pacific Standard Time; PST
Z time zone offset/id          zone               -0800; -08:00; America/Los_Angeles

您的格式似乎无效乔达link

将正确的格式dd MMM yyyy HH:mm:ss z添加到映射中,如下所述,应该可以解决您的问题。

{  
   "createdDate":{  
      "type":"date",
      "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis||EEE MMM dd HH:mm:ss Z YYYY||dd MMM yyyy HH:mm:ss zzz||dd MMM yyyy HH:mm:ss z"
   }
}

希望有帮助!