弹性搜索中的自定义日期格式

里特维克

我正在尝试使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章