2017-06-11 3 views
0

Ich benutze die Reindex-API in ES 5.4.1, und ich muss ein langes Feld (das ein Datum darstellt) in ein Datumsfeld konvertieren. So sieht der Quellindex wie folgt aus:Elasticsearch Ingest Pipeline -epoch_millis nach Datum Format

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

temp muss in ein Datumsobjekt konvertiert werden.

Ich möchte einen Prozessor verwenden,

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

Aber zu versuchen, diesen Prozessor zu erstellen, bekomme ich einen Fehler

{ 
    "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 
} 

Irgendwelche Ideen?

Antwort

0

Der formats Parameter falsch ist, müssen Sie UNIX_MS statt epoch_millis, wie diese verwenden:

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

Nizza, jetzt die Pipeline gearbeitet zu schaffen! Vielen Dank Val, du bist großartig. Allerdings gibt es jetzt ein neues Problem. Wenn ich versuche, die Pipeline mit der reindex API anzuwenden, mit - POST _reindex { "Quelle": { "index": "twitter" }, "dest": { "index": "twitter" , "pipeline": "p1" } } Ich bekomme jetzt eine Ausnahme "field [temp] vom Typ [java.lang.Long] kann nicht in [java.lang.String]" – user2689782

+0

Sie können nicht das gleiche verwenden Index als Quelle und Ziel. Ihr Ziel muss ein anderer Index mit dem neuen Mapping sein. – Val

+0

Ich benutze einen anderen Zielindex – user2689782

Verwandte Themen