无法在我的机器中启动 ElasticSearch,执行 elasticsearch.bat 时发生 StartupException

Posted

技术标签:

【中文标题】无法在我的机器中启动 ElasticSearch,执行 elasticsearch.bat 时发生 StartupException【英文标题】:Unable to start ElasticSearch in my machine, StartupException is occuring while executing elasticsearch.bat 【发布时间】:2019-10-01 05:37:32 【问题描述】:

我需要在 elasticSearch 上工作,我已经从授权网站下载了 elasticsearch-6.7.2,但是在尝试启动 ElasticSearch 服务器并执行elasticsearch.bat 文件时,我收到以下错误:

org.elasticsearch.bootstrap.StartupException: ElasticsearchException[X-Pack is not supported and Machine Learning is not available for [windows-x86];您可以通过在 elasticsearch.yml 中设置 xpack.ml.enabled: false 来使用其他 X-Pack 功能(不支持)] 在 org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.7.2.jar:6.7.2] 在 org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.7.2.jar:6.7.2] 原因:org.elasticsearch.ElasticsearchException: X-Pack is not supported and Machine Learning is not available for [windows-x86];您可以通过在 elasticsearch.yml 中设置 xpack.ml.enabled: false 来使用其他 X-Pack 功能(不支持) 在 org.elasticsearch.xpack.ml.MachineLearningFeatureSet.isRunningOnMlPlatform(MachineLearningFeatureSet.java:107) ~[?:?] 在 org.elasticsearch.xpack.ml.MachineLearningFeatureSet.isRunningOnMlPlatform(MachineLearningFeatureSet.java:98) ~[?:?] 在 org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:413) ~[?:?] 在 org.elasticsearch.node.Node.lambda$new$11(Node.java:472) ~[elasticsearch-6.7.2.jar:6.7.2] 在 java.util.stream.ReferencePipeline$7$1.accept(Unknown Source) ~[?:1.8.0_211] 在 java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_211] 在 java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_211] 在 java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:1.8.0_211] 在 java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source) ~[?:1.8.0_211] 在 java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_211] 在 java.util.stream.ReferencePipeline.collect(未知来源)~[?:1.8.0_211] 在 org.elasticsearch.node.Node.(Node.java:475) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.node.Node.(Node.java:266) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Bootstrap$5.(Bootstrap.java:212) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:212) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.7.2.jar:6.7.2] 在 org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.7.2.jar:6.7.2] ... 6 更多

【问题讨论】:

【参考方案1】:

转到 ElasticSearch 目录:

C:\elasticsearch-6.7.2\config

将以下条目放入您的elasticsearch.yml

xpack.ml.enabled: false

【讨论】:

【参考方案2】:

错误信息非常直接。 X-Pack 不支持且机器学习不适用于 windows-x86,因此它与您的操作系统不兼容。

原因是不支持 32 位架构。如果你碰巧有一个 64 位系统操作系统,那么其他东西会让它认为你正在使用 32 位环境。检查您的 JVM 并查看它是否为 32 位。如果是 32 位,那就是问题所在。

根据来自 elasticsearch docs 的以下警告,它也可能是由不受支持的 CPU 引起的。在这种情况下,您可以通过将xpack.ml.enabled: false 添加到elasticsearch.yml 来禁用该选项。

【讨论】:

感谢您的见解,但我刚刚通过禁用 ML 解决了这个问题 @AkashRoy 当且仅当您不想使用机器学习时,这是一个解决方案。如果您不想限制自己,可以确保它是 64 位 env。 如果java --version 有以下输出,可能的过程是什么? openjdk 11.0.11 2021-04-20 OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04) OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)【参考方案3】:

我得到的日志:

Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].]

在给定的组合上测试:

macOS:Catalina,版本:10.15.4 Java 版本:11.0.4 弹性版本:7.6.2

可能的解决方法是在elasticsearch.yml 文件中设置x-pack-ml.enabled: false

更多详情请点击here

【讨论】:

以上是关于无法在我的机器中启动 ElasticSearch,执行 elasticsearch.bat 时发生 StartupException的主要内容,如果未能解决你的问题,请参考以下文章

M1 Mac - 启动 ElasticSearch 的问题。无法运行 jdk/bin/java

Discord.js 无法永远在服务器上使用 process.env 启动机器人,但它可以通过 Visual Studio 在我的本地驱动器上正常工作

如何从服务器访问ElasticSearch?

程序无法启动 - API-MS-WIN-CORE ???。DLL

如何在我的本地机器中对“SQL 数据库/Bluemix”进行编目?

使用密码验证后弹性搜索`无法建立连接,因为目标机器主动拒绝`