Hmm, well CPU is pretty much zero. Heap is barely used. I even made the task put method be a noop other than to log time-since-last call. No change. With yourkit I see that ES has a thread that is sleeping, but it's in a monitor thread pool and clearly not blocking kafka. Anyway, I even removed all code except logging and still it takes 10s to deliver just 1500 messages.
I would say maybe it's the network, but the writing to ES is quite fast and the data in from kafka exactly what goes out to ES. I'll keep investigating.