--- title: "无法启动datafeed datafeedId,因为索引正在升级中 - 如何解决此Elasticsearch异常" date: 2026-01-22 lastmod: 2026-01-22 description: "当Elasticsearch尝试启动datafeed时失败,因为某些索引正在进行升级操作。本文介绍该异常的原因及解决方案。" tags: ["Elasticsearch异常", "datafeed", "索引升级"] summary: "版本: 6.8-7.15 简而言之,当Elasticsearch尝试启动datafeed但由于某些索引正在升级而无法启动时,就会出现此错误。这意味着系统正在更新索引的过程中,在此过程完成之前无法启动datafeed。要解决此问题,您可以等待升级过程完成,或者暂停升级,启动datafeed,然后恢复升级。然而,通常建议让升级完成,以避免潜在的数据不一致。 日志上下文 # 日志"Could not start datafeed [" + datafeedId +"] as indices are being upgraded"的类名是 DatafeedNodeSelector.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考: public void checkDatafeedTaskCanBeCreated() { if (MlMetadata.getMlMetadata(clusterState).isUpgradeMode()) { String msg = "Unable to start datafeed [" + datafeedId +"] explanation [" + AWAITING_UPGRADE.getExplanation() + "]"; LOGGER.debug(msg); Exception detail = new IllegalStateException(msg); throw new ElasticsearchStatusException("Could not start datafeed [" + datafeedId +"] as indices are being upgraded", RestStatus.TOO_MANY_REQUESTS, detail); } AssignmentFailure assignmentFailure = checkAssignment(); if (assignmentFailure !" --- > **版本:** 6.8-7.15 简而言之,当Elasticsearch尝试启动datafeed但由于某些索引正在升级而无法启动时,就会出现此错误。这意味着系统正在更新索引的过程中,在此过程完成之前无法启动datafeed。要解决此问题,您可以等待升级过程完成,或者暂停升级,启动datafeed,然后恢复升级。然而,通常建议让升级完成,以避免潜在的数据不一致。 ## 日志上下文 日志"Could not start datafeed [" + datafeedId +"] as indices are being upgraded"的类名是[DatafeedNodeSelector.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java public void checkDatafeedTaskCanBeCreated() { if (MlMetadata.getMlMetadata(clusterState).isUpgradeMode()) { String msg = "Unable to start datafeed [" + datafeedId +"] explanation [" + AWAITING_UPGRADE.getExplanation() + "]"; LOGGER.debug(msg); Exception detail = new IllegalStateException(msg); throw new ElasticsearchStatusException("Could not start datafeed [" + datafeedId +"] as indices are being upgraded", RestStatus.TOO_MANY_REQUESTS, detail); } AssignmentFailure assignmentFailure = checkAssignment(); if (assignmentFailure != null && assignmentFailure.isCriticalForTaskCreation) { String msg = "No node found to start datafeed [" + datafeedId + "]; " + ```