Hello,
I have an Elasticsearch 8.19.20 self-hosted basic/free cluster used for logging and Kibana that I am trying to upgrade to 9.5.2. in Kibana, under Management > Stack management I see no Migration Assistant so I am using the /_migration/deprecations API to identify critical issues before the upgrade.
GET /_migration/deprecations
{
"cluster_settings": [],
"node_settings": [
{
"level": "warning",
"message": "Specifying multiple data paths is deprecated",
"url": "https://ela.st/es-deprecation-7-multiple-paths",
"details": "The [path.data] setting contains a list of paths. Specify a single path as a string. Use RAID or other system level features to utilize multiple disks. If multiple data paths are configured, the node will fail to start in 8.0. (nodes impacted: [log03, log04, log02, log06, log07, log01, log05])",
"resolve_during_rolling_upgrade": false
},
{
"level": "warning",
"message": "Multiple data paths are not supported",
"url": "https://ela.st/es-deprecation-7-multiple-paths",
"details": "The [path.data] setting contains a list of paths. Specify a single path as a string. Use RAID or other system level features to utilize multiple disks. If multiple data paths are configured, the node will fail to start in 8.0. (nodes impacted: [log03, log04, log02, log06, log07, log01, log05])",
"resolve_during_rolling_upgrade": false
}
],
"ml_settings": [],
"index_settings": {},
"data_streams": {},
"ilm_policies": {},
"templates": {}
}
Multiple data paths is a known issue with my configuration which I will resolve later by re-installing the nodes one by one and migrating shards.
The bigger issue is that /_migration/deprecations does not flag the index that will fail the migration:
{"@timestamp":"$DATE","log.level":"ERROR","message":"fatal exception while booting Elasticsearch", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.bootstrap.Elasticsearch","elasticsearch.node.name":"log01","elasticsearch.cluster.name":"logcluster","error.type":"java.lang.IllegalStateException","error.message":"The index [.transform-internal-007/Xl2lAg3STEq-huvgPC0QcA] created in version [7.14.0] with current compatibility version [7.14.0] must be marked as read-only using the setting [index.blocks.write] set to [true] before upgrading to 9.5.2.","error.stack_trace":"java.lang.IllegalStateException: The index [.transform-internal-007/Xl2lAg3STEq-huvgPC0QcA] created in version [7.14.0] with current compatibility version [7.14.0] must be marked as read-only using the setting [index.blocks.write] set to [true]
It seems that even a user with superuser role cannot change this setting:
curl -sk -X PUT "http://localhost:9200/.transform-internal-007/_block/write"
{"error":{"root_cause":[{"type":"security_exception","reason":"action [indices:admin/block/add] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.transform-internal-007], this action is granted by the index privileges [manage,all]"}],"type":"security_exception","reason":"action [indices:admin/block/add] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.transform-internal-007], this action is granted by the index privileges [manage,all]"},"status":403}
Questions:
- Why did
/_migrations/deprecationsnot flag internal indices as blocking the major version upgrade? - Can I resolve this without either:
- Wiping the Elasticsearch data directory (losing all my data) and starting over with version 9.5.x?
- Dumping all of the indices in my 8.19.20 cluster and restoring them to a new 9.5.x cluster?
Unfortunately, AI was not able to come up with any alternative solutions that worked, so I present my question to meatware for consideration.
And yes, I have read Issues with upgrade from 8.18.1 to 9.0.1


