我正在尝试使用joda-time库格式在Elastic-Search中格式化日期字段。我想要实现格式"Mon Sep 18 17:12:37 IST 2017"
。首先,我使用以下代码:
"alarm_timestamp": {
"type": "date",
"format": "EEE MMM d H:m:s zzz YYYY"
}
它不起作用。后来,我阅读了这里提出的问题。因此,我更改了代码:
"alarm_timestamp": {
"type": "date",
"format": "E MMM d H:m:s z Y"
}
在这两种情况下,映射均已成功创建。但是,当我尝试索引数据时,它给了错误。
它给出的错误是:
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "failed to parse [alarm_timestamp]"
}
],
"type": "mapper_parsing_exception",
"reason": "failed to parse [alarm_timestamp]",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "Invalid format: \"Mon Sep 18 17:12:37 IST 2017\" is malformed at \"IST 2017\""
}
},
"status": 400
}
有什么建议么)?
从Elasticsearch文档中format
:
支持完全可自定义的日期格式。这些语法在Joda文档中进行了说明。
该乔达文档说,有关z
:
区域名称:时区名称('z')无法解析。
问题是这些缩写如IST
时区可能是模棱两可的。
在维基百科时区页说的情况如下:
缩写
时区通常由字母缩写表示,例如“ EST”,“ WST”和“ CST”,但它们不是国际时间和日期标准ISO 8601的一部分,因此不建议将它们用作时区的唯一指示符。这样的名称可能是模棱两可的。例如,“ ECT”可以解释为“加勒比海东部时间”(UTC-4h),“厄瓜多尔时间”(UTC-5h)或“欧洲中部时间”(UTC + 1h)。
因此,您将看到一些缩写有效,而有些则无效。鼓励不要使用这些缩写。而是使用以下之一:
E MMM d H:m:s Z Y
和索引为 Mon Sep 18 17:12:37 +02:00 2017
E MMM d H:m:s ZZZ Y
和索引为 Mon Sep 18 17:12:37 Europe/Istanbul 2017
以下是Joda的可用时区列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句