gle*_*leX 9 datetime timestamp datetime-format elasticsearch
我正在尝试将以下JSON输入发送到elasticsearch,但我正在获取解析器错误.
这是JSON输入
{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00[Europe/Paris]"
}
Run Code Online (Sandbox Code Playgroud)
索引定义
{
   "mappings":{
      "vehicle":{
         "properties":{
            "vehicle":{
               "type":"string"
            },
            "position":{
               "type": "geo_point"
            },
            "issue":{
               "type":"string"
            },
            "timestamp":{
               "type":"date",
               "format":"YYYY-MM-DD'T'HH:mm:ssZ"
            }
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)
以及与"timestamp"字段相关的错误.
"reason": "Invalid format: \"2016-07-15T15:29:50+02:00[Europe/Paris]\" is malformed at \"[Europe/Paris]\""
Run Code Online (Sandbox Code Playgroud)
我尝试了一些日期格式,但没有人成功.任何人都可以帮我定义正确的格式来解析elasticsearch中的"timestamp"字段吗?
谢谢!!!
Sum*_*mar 14
正如您在映射中所看到的,您的字段timestamp被映射为date带格式的类型YYYY-MM-DD'T'HH:mm:ssZ.因此,Elasticsearch希望timestamp以相同的格式传递字段.您传递的数据2016-07-15T15:29:50+02:00[Europe/Paris]包括[Europe/Paris]未在映射中提供的区域后数据,并且不遵循ISO 8601Elasticsearch支持的默认格式(此处提供更多数据).
您可以在此处阅读有关Elasticsearch支持的默认日期格式的更多信息.
因此,您必须删除传递给Elasticsearch的额外数据并根据映射保留它
{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00"
}
Run Code Online (Sandbox Code Playgroud)
或者将映射更改为自定义日期格式,该格式遵循此处定义的joda语法.在您的情况下,如果它是必需的文字区域,您也必须使用z.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           46716 次  |  
        
|   最近记录:  |