我正在尝试将以下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"
}
}
}
}
}
以及与“timestamp”字段相关的错误 .
"reason": "Invalid format: \"2016-07-15T15:29:50+02:00[Europe/Paris]\" is malformed at \"[Europe/Paris]\""
我尝试了一些日期格式,但没有人成功 . 任何人都可以帮我定义正确的格式来解析elasticsearch中的“timestamp”字段吗?
谢谢!!!
1 回答
正如您在映射中所看到的那样,您的字段
timestamp
被映射为date
类型,格式为YYYY-MM-DD'T'HH:mm:ssZ
. 因此,Elasticsearch希望timestamp
字段以相同的格式传递 . 您传递的数据是2016-07-15T15:29:50+02:00[Europe/Paris]
,其中包括区域数据之后的[Europe/Paris]
,该数据未在映射中给出,并且不遵循Elasticsearch支持的默认ISO 8601
格式(更多数据可用here) .您可以阅读Elasticsearch here支持的默认日期格式的更多信息 .
因此,您必须删除传递给Elasticsearch的额外数据并根据映射保留它
或者将映射更改为自定义日期格式,该格式遵循定义为here的joda语法 . 在您的情况下,如果需要文字区域,您也必须使用
z
.