elasticsearch,timestamp,datetime-format,Datetime,elasticsearch,Timestamp,Datetime Format" /> elasticsearch,timestamp,datetime-format,Datetime,elasticsearch,Timestamp,Datetime Format" />

Datetime 弹性搜索日期格式

Datetime 弹性搜索日期格式,datetime,elasticsearch,timestamp,datetime-format,Datetime,elasticsearch,Timestamp,Datetime Format,我试图将以下JSON输入发送到elasticsearch,但得到了一个解析器错误 这是JSON输入 { "chassisNumber": "654321", "position": "40.480143, -3.688960", "issue": "Position", "timestamp": "2016-07-15T15:29:50+02:00[Europe/Paris]" } 索引定义 { "mappings":{ "vehicle":{

我试图将以下JSON输入发送到elasticsearch,但得到了一个解析器错误

这是JSON输入

{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00[Europe/Paris]"
}
索引定义

{
   "mappings":{
      "vehicle":{
         "properties":{
            "vehicle":{
               "type":"string"
            },
            "position":{
               "type": "geo_point"
            },
            "issue":{
               "type":"string"
            },
            "timestamp":{
               "type":"date",
               "format":"YYYY-MM-DD'T'HH:mm:ssZ"
            }
         }
      }
   }
}
以及与“时间戳”字段相关联的错误

我尝试了几种约会方式,但没有一种成功。有人能帮我定义正确的格式来解析elasticsearch中的“timestamp”字段吗


谢谢

正如您在映射中看到的,您的字段
时间戳
映射为
日期
类型,格式为
YYYY-MM-DD'T'HH:MM:ssZ
。因此,Elasticsearch希望
timestamp
字段以相同的格式传递。您传递的数据是
2016-07-15T15:29:50+02:00[Europe/Paris]
,其中包括
[Europe/Paris]
区域数据之后的数据,该区域数据未在映射中给出,且不遵循Elasticsearch支持的默认
ISO 8601
格式(更多数据可用)

您可以阅读有关Elasticsearch支持的默认日期格式的更多信息

因此,要么您必须删除传递给Elasticsearch的额外数据,并根据映射保留它

{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00"
}

或者将映射更改为遵循定义的joda语法的自定义日期格式。在您的情况下,如果需要文字区域,您也必须使用
z

您需要删除
[Europe/Paris]
部分,因为
+02:00
就足够了。
{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00"
}