Elasticsearch Ingest pipe -epoch_millis в формате даты

Я использую API переиндексации в ES 5.4.1, и мне нужно преобразовать длинное поле (которое представляет дату) в поле даты. Таким образом, исходный индекс выглядит так

"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 ответ

formats параметр неверный, вам нужно использовать UNIX_MS вместо epoch_millis, как это:

PUT _ingest/pipeline/p1
{
  "processors": [
      {
        "date" : {
        "field" : "temp",
        "target_field" : "updatedOn",
        "formats":["UNIX_MS"],
        "timezone" : "Europe/Amsterdam"
      }
      }
    ]
}
Другие вопросы по тегам