Elasticsearch日期格式



我试图将以下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"
            }
         }
      }
   }
}

以及与"时间戳"字段相关联的错误。

"reason": "Invalid format: "2016-07-15T15:29:50+02:00[Europe/Paris]" is malformed at "[Europe/Paris]""

我尝试了几种日期格式,但没有一种成功。有人能帮我定义正确的格式来解析弹性搜索中的"时间戳"字段吗?

谢谢!!!

正如您在映射中看到的,字段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格式(此处提供更多数据(。

您可以在这里阅读更多关于Elasticsearch支持的默认日期格式的信息。

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

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

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

相关内容

  • 没有找到相关文章

最新更新