Im in the process of doing this, what i learned:
There's no "proper" way to do it. Everyone needs a different solution based on a use-case. For me, after backing up my AWS cluster, restoring to 6.x (from 5.x), then trying to do a inplace upgrade, i realized this was not possible due to breaking changes: https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-7.0.html
If none of these will break your index (it most likely will), you can use whatever you'd like (snapshot 6.x > restore to 7.x - this is the fastest way). However if it will break your index, then you need to figure that out.
For me i just ended up reindexing my entire 2.2 TB index. It took less than a day, and would've been much faster than using the reindex API and other solutions available.