ElasticSearch 5.6 无法在 Mac OS 上启动

ElasticSearch 5.6 cannot start on Mac OS

使用 Brew 安装后,我无法在 Mac 上启动 ElasticSearch 5.6 服务器。收到此错误:

$ /usr/local/opt/elasticsearch@5.6/bin/elasticsearch
Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: org.apache.lucene.index.IndexFormatTooNewException: Format version is not supported (resource BufferedChecksumIndexInput(SimpleFSIndexInput(path="/usr/local/etc/elasticsearch/elasticsearch.keystore"))): 3 (needs to be between 1 and 2)
Likely root cause: org.apache.lucene.index.IndexFormatTooNewException: Format version is not supported (resource BufferedChecksumIndexInput(SimpleFSIndexInput(path="/usr/local/etc/elasticsearch/elasticsearch.keystore"))): 3 (needs to be between 1 and 2)
    at org.apache.lucene.codecs.CodecUtil.checkHeaderNoMagic(CodecUtil.java:216)
    at org.apache.lucene.codecs.CodecUtil.checkHeader(CodecUtil.java:198)
    at org.elasticsearch.common.settings.KeyStoreWrapper.load(KeyStoreWrapper.java:175)
    at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:246)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:304)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)
Refer to the log for complete error details.

由于它不是最新版本的 ElasticSearch,我想它安装了一些不兼容的包版本,但不确定具体是什么包。

任何人都可以帮助它工作吗?

服务器很可能正在尝试读取更新的索引 (org.apache.lucene.index.IndexFormatTooNewException)。

很可能唯一的方法是完全摆脱它:

sudo rm -rf  /usr/local/var/lib/elasticsearch

请仔细检查索引并确保您不再需要旧的 6.* 索引,因为您显然会丢失它。

我刚遇到同样的问题,重新生成密钥库解决了我的问题。以下是我采取的步骤:

备份现有密钥库:

cd /usr/local/etc/elasticsearch/
mv elasticsearch.keystore elasticsearch.keystore.old

生成新的密钥库:

cd /usr/local/Cellar/elasticsearch@5.6/5.6.15/libexec/bin/
elasticsearch-keystore create

提供的答案是正确的,但我想补充一点,您可以在删除密钥文件后(重新)启动 elasticsearch。它将检测到该文件不存在并尝试自动生成一个新的 .keystore 文件。无需单独 运行 elasticsearch-keystore create 命令。