A field that had to change from text to keyword, which is not an update.
# the attempt
PUT /products/_mapping
{ "properties": { "sku": { "type": "keyword" } } }
→ 400: mapper [sku] cannot be changed from type
[text] to [keyword]
# the actual path
PUT /products-2025-05
POST /_reindex { "source": {"index":"products-2025-04"},
"dest": {"index":"products-2025-05"} }
POST /_aliases # atomic swap
A mapping is append-only for existing fields, which is the constraint that makes an alias mandatory rather than a nicety. The eleven-minute rebuild is what makes this routine — the same change on an index that takes four hours to build is a maintenance window, and the difference is entirely in the bulk settings.