When we wanted to change the format of a field from integer to a string for using slugs instead of ids, the ideal process in my mind would have been these proposed steps, but with the option to pause after the new index creation, index the data from source and swap the alias. 

The is because of the way ES is configured, I've seen it sometimes try and guess the format and override the mapping based on the data you're sending into it.