We have to do period maintenance on our nodes that requires a restart of the box. When I do this, I set:
"cluster.routing.allocation.enable" : "none"
Then I restart the box. When it is back, and the node has rejoined, I reenable allocation. At this point, I would expect the data on the node to still be good, and the only recovery to be the events that have queued while the box was down (a matter of a couple minutes). What I see is that when I reenable allocation, a long recovery cycle is kicked off. This means that updating all our nodes takes the entire day as I wait for green status before going on to the next node.