I assume you run this mass indexing job as part of your migration procedure from one version of your application to the next.
If so, in the one-time job that triggers reindexing, you could start Hibernate with the following setting:
hibernate.search.default.elasticsearch.index_schema_management_strategy drop-and-create
Then, on startup Hibernate Search will drop the index completely, along with its mapping, and recreate it.
Be careful though, this is fine only if you execute the mass indexing in a dedicated program. Your application should probably not be started with this setting, as it will cause it to drop the indexes on every startup (e.g. if your had to restart your server for whatever reason).
Source: the official documentation
On a side note:
The problem is that, differently from using Lucene directly, when we try to purge all the indexes, it only deletes the documents, it doesn't delete the index config, which ends up in conflicts when trying to modify an existing field.
This is actually the same behavior as the Lucene integration: when you purge a Lucene index, the index file stays the same, it's just that any content has been removed.
The main difference is that Elasticsearch has some index metadata (the mapping), while "raw" Lucene doesn't.
However, it is true that the current behavior is rather annoying in your case. We will try to address it in the future, probably as part of HSEARCH-2861.