Thanks Chris, that worked. For posterity here's my solution:
// original fields
Fields logFields = new Fields("ts", "some_id", "some_id2");
// tmp fields to avoid conflict
Fields tmpFields = logFields.append(new Fields
("timestamp")).subtract(new Fields("ts"));
// rename `ts` -> `timestamp`
importPipe = new Each(importPipe, new Fields("ts"), new Identity
(new Fields("timestamp")), tmpFields);
// parse our `timestamp` field, return the original logFields
(this means we are not keeping our `timestamp` field, just grabbing
`ts` which was emitted from DateParser)
importPipe = new Each(importPipe, new Fields("timestamp"), new
DateParser("yyyy-MM-dd HH:mm:ss"), logFields);
Now String `timestamp` is converted to long `ts` and the rest of the
fields are intact.
Nate