Issues upgrading Elasticsearch from 8 to 9 due to old 7.x indices and restricted Kibana indices

Oh maybe this is it

{
  "features": [
    {
      "feature_name": "async_search",
      "minimum_index_version": "7.7.0",
      "migration_status": "ERROR",
      "indices": [
        {
          "index": ".async-search",
          "version": "7.7.0",
          "failure_cause": {
            "error": {
              "root_cause": [
                {
                  "type": "illegal_state_exception",
                  "reason": """unable to create new index [.async-search-reindexed-for-9] because it would match legacy templates [[{"all":{"order":0,"version":1,"index_patterns":["*"],"settings":{"index":{"number_of_replicas":"0","routing":{"allocation":{"require":{"box_type":"hot"}}}}},"mappings":{"_doc":{"_routing":{"required":false},"numeric_detection":false,"dynamic_date_formats":["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"],"_source":{"excludes":[],"includes":[],"enabled":true},"dynamic":true,"date_detection":true}},"aliases":{}}}]]""",
                  "stack_trace": """org.elasticsearch.ElasticsearchException$1: unable to create new index [.async-search-reindexed-for-9] because it would match legacy templates [[{"all":{"order":0,"version":1,"index_patterns":["*"],"settings":{"index":{"number_of_replicas":"0","routing":{"allocation":{"require":{"box_type":"hot"}}}}},"mappings":{"_doc":{"_routing":{"required":false},"numeric_detection":false,"dynamic_date_formats":["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"],"_source":{"excludes":[],"includes":[],"enabled":true},"dynamic":true,"date_detection":true}},"aliases":{}}}]]
	at org.elasticsearch.server@8.18.2/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:706)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.ElasticsearchException.generateFailureXContent(ElasticsearchException.java:634)
	at org.elasticsearch.system_indices.action.GetFeatureUpgradeStatusResponse$IndexInfo.toXContent(GetFeatureUpgradeStatusResponse.java:306)
	at org.elasticsearch.xcontent@8.18.2/org.elasticsearch.xcontent.XContentBuilder.value(XContentBuilder.java:993)
	at org.elasticsearch.xcontent@8.18.2/org.elasticsearch.xcontent.XContentBuilder.value(XContentBuilder.java:982)
	at org.elasticsearch.system_indices.action.GetFeatureUpgradeStatusResponse$FeatureUpgradeStatus.toXContent(GetFeatureUpgradeStatusResponse.java:191)
	at org.elasticsearch.xcontent@8.18.2/org.elasticsearch.xcontent.XContentBuilder.value(XContentBuilder.java:993)
	at org.elasticsearch.xcontent@8.18.2/org.elasticsearch.xcontent.XContentBuilder.value(XContentBuilder.java:982)
	at org.elasticsearch.system_indices.action.GetFeatureUpgradeStatusResponse.toXContent(GetFeatureUpgradeStatusResponse.java:59)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.rest.action.RestToXContentListener.buildResponse(RestToXContentListener.java:53)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.rest.action.RestToXContentListener.buildResponse(RestToXContentListener.java:25)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.rest.action.RestBuilderListener.buildResponse(RestBuilderListener.java:28)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.rest.action.RestResponseListener.processResponse(RestResponseListener.java:27)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.rest.action.RestActionListener.onResponse(RestActionListener.java:37)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:203)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:197)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.action.ActionListenerResponseHandler.handleResponse(ActionListenerResponseHandler.java:49)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleResponse(TransportService.java:1500)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundHandler.doHandleResponse(InboundHandler.java:434)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundHandler.handleResponse(InboundHandler.java:383)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundHandler.executeResponseHandler(InboundHandler.java:150)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:125)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:98)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:816)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:125)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:97)
	at org.elasticsearch.server@8.18.2/org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:62)
	at org.elasticsearch.transport.netty4@8.18.2/org.elasticsearch.transport.netty4.Netty4MessageInboundHandler.channelRead(Netty4MessageInboundHandler.java:55)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.codec@4.1.118.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.handler@4.1.118.Final/io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1515)
	at io.netty.handler@4.1.118.Final/io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1378)
	at io.netty.handler@4.1.118.Final/io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1427)
	at io.netty.codec@4.1.118.Final/io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
	at io.netty.codec@4.1.118.Final/io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
	at io.netty.codec@4.1.118.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.transport@4.1.118.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.transport@4.1.118.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
	at io.netty.transport@4.1.118.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
	at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:697)
	at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:660)
	at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at io.netty.common@4.1.118.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
	at io.netty.common@4.1.118.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1447)
Caused by: java.lang.IllegalStateException: unable to create new index [.async-search-reindexed-for-9] because it would match legacy templates [[{"all":{"order":0,"version":1,"index_patterns":["*"],"settings":{"index":{"number_of_replicas":"0","routing":{"allocation":{"require":{"box_type":"hot"}}}}},"mappings":{"_doc":{"_routing":{"required":false},"numeric_detection":false,"dynamic_date_formats":["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"],"_source":{"excludes":[],"includes":[],"enabled":true},"dynamic":true,"date_detection":true}},"aliases":{}}}]]
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.migrateSingleIndex(SystemIndexMigrator.java:405)
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.migrateResource(SystemIndexMigrator.java:282)
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.lambda$startFeatureMigration$7(SystemIndexMigrator.java:322)
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.lambda$updateTaskState$10(SystemIndexMigrator.java:341)
	at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:257)
	at org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:203)
	at org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:197)
	at org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
	at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
	at org.elasticsearch.action.ActionListenerImplementations$DelegatingResponseActionListener.onResponse(ActionListenerImplementations.java:184)
	at org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.persistent.PersistentTasksClusterService$4.clusterStateProcessed(PersistentTasksClusterService.java:276)
	at org.elasticsearch.cluster.service.MasterService$UnbatchedExecutor.lambda$execute$0(MasterService.java:576)
	at org.elasticsearch.cluster.service.MasterService$ExecutionResult.onPublishSuccess(MasterService.java:961)
	at org.elasticsearch.cluster.service.MasterService$4.onResponse(MasterService.java:387)
	at org.elasticsearch.cluster.service.MasterService$4.onResponse(MasterService.java:382)
	at org.elasticsearch.action.ActionListenerImplementations$RunAfterActionListener.onResponse(ActionListenerImplementations.java:298)
	at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.action.support.ThreadedActionListener$1.doRun(ThreadedActionListener.java:40)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1044)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.lang.Thread.run(Thread.java:1447)
"""
                }
              ],
              "type": "illegal_state_exception",
              "reason": """unable to create new index [.async-search-reindexed-for-9] because it would match legacy templates [[{"all":{"order":0,"version":1,"index_patterns":["*"],"settings":{"index":{"number_of_replicas":"0","routing":{"allocation":{"require":{"box_type":"hot"}}}}},"mappings":{"_doc":{"_routing":{"required":false},"numeric_detection":false,"dynamic_date_formats":["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"],"_source":{"excludes":[],"includes":[],"enabled":true},"dynamic":true,"date_detection":true}},"aliases":{}}}]]""",
              "stack_trace": """java.lang.IllegalStateException: unable to create new index [.async-search-reindexed-for-9] because it would match legacy templates [[{"all":{"order":0,"version":1,"index_patterns":["*"],"settings":{"index":{"number_of_replicas":"0","routing":{"allocation":{"require":{"box_type":"hot"}}}}},"mappings":{"_doc":{"_routing":{"required":false},"numeric_detection":false,"dynamic_date_formats":["strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"],"_source":{"excludes":[],"includes":[],"enabled":true},"dynamic":true,"date_detection":true}},"aliases":{}}}]]
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.migrateSingleIndex(SystemIndexMigrator.java:405)
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.migrateResource(SystemIndexMigrator.java:282)
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.lambda$startFeatureMigration$7(SystemIndexMigrator.java:322)
	at org.elasticsearch.system_indices.task.SystemIndexMigrator.lambda$updateTaskState$10(SystemIndexMigrator.java:341)
	at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:257)
	at org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:203)
	at org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:197)
	at org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
	at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
	at org.elasticsearch.action.ActionListenerImplementations$DelegatingResponseActionListener.onResponse(ActionListenerImplementations.java:184)
	at org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
	at org.elasticsearch.persistent.PersistentTasksClusterService$4.clusterStateProcessed(PersistentTasksClusterService.java:276)
	at org.elasticsearch.cluster.service.MasterService$UnbatchedExecutor.lambda$execute$0(MasterService.java:576)
	at org.elasticsearch.cluster.service.MasterService$ExecutionResult.onPublishSuccess(MasterService.java:961)
	at org.elasticsearch.cluster.service.MasterService$4.onResponse(MasterService.java:387)
	at org.elasticsearch.cluster.service.MasterService$4.onResponse(MasterService.java:382)
	at org.elasticsearch.action.ActionListenerImplementations$RunAfterActionListener.onResponse(ActionListenerImplementations.java:298)
	at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
	at org.elasticsearch.action.support.ThreadedActionListener$1.doRun(ThreadedActionListener.java:40)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1044)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.lang.Thread.run(Thread.java:1447)