Elasticsearch Ingest管道-epoch_millis到日期格式

时间:2017-06-11 20:01:41

标签: date elasticsearch data-ingestion

我在ES 5.4.1中使用reindex API,我需要将一个长字段(代表一个日期)转换为日期字段。所以源索引看起来像

"hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index": "twitter",
            "_type": "tweet",
            "_id": "1",
            "_score": 1,
            "_source": {
               "temp": 1496938873065,
               "message": "hello",
               "user": "joan"
            }
         }
      ]
   }

temp必须转换为日期对象。

我想使用处理器,

PUT _ingest/pipeline/p1
{
  "processors": [
      {
        "date" : {
        "field" : "temp",
        "target_field" : "updatedOn",
        "formats":["epoch_millis"],
        "timezone" : "Europe/Amsterdam"
      }
      }
    ]
}

但是在尝试创建此处理器时,我收到错误

{
   "error": {
      "root_cause": [
         {
            "type": "exception",
            "reason": "java.lang.IllegalArgumentException: Illegal pattern component: p",
            "header": {
               "processor_type": "date"
            }
         }
      ],
      "type": "exception",
      "reason": "java.lang.IllegalArgumentException: Illegal pattern component: p",
      "caused_by": {
         "type": "illegal_argument_exception",
         "reason": "Illegal pattern component: p"
      },
      "header": {
         "processor_type": "date"
      }
   },
   "status": 500
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

formats参数错误,您需要使用UNIX_MS代替epoch_millis,如下所示:

PUT _ingest/pipeline/p1
{
  "processors": [
      {
        "date" : {
        "field" : "temp",
        "target_field" : "updatedOn",
        "formats":["UNIX_MS"],
        "timezone" : "Europe/Amsterdam"
      }
      }
    ]
}