Cannot install search-guard - "ERROR: `elasticsearch` directory is missing in the plugin zip"

Cannot install search-guard - "ERROR: `elasticsearch` directory is missing in the plugin zip"

如主题所述,我在尝试为我的 ELK 堆栈安装 search-guard 插件时遇到问题:

[XXX@XXXX bin]$ ./elasticsearch-plugin install -b file:///home/xxxx/search-guard-6-6.2.1-21.0.zip
-> Downloading file:///home/xxxx/search-guard-6-6.2.1-21.0.zip
[=================================================] 100%  
ERROR: `elasticsearch` directory is missing in the plugin zip

我尝试从自定义目录执行此操作,然后从家里跟随 ,但没有帮助。当我解压缩存档时,我可以看到那里有一个名为 "elasticsearch" 的目录:

有人对如何进行有任何建议吗?

错误来自 lib\plugin-cli-x.x.x.jar 中的 InstallPluginCommand.class,这正是所说的。这是代码的一部分,因为它正在读取 zip 文件中的条目:

ZipInputStream zipInput = new ZipInputStream(Files.newInputStream(zip));

try {
    ZipEntry entry;
    while((entry = zipInput.getNextEntry()) != null) {
        if (entry.getName().startsWith("elasticsearch/")) {
            hasEsDir = true;
            ...
    }

}

if (!hasEsDir) {
    throw new UserException(2, "`elasticsearch` directory is missing in the plugin zip");
}

我知道这对你帮助不大,但作为最后的努力,如果你不能找到问题的根本原因,我为克服障碍所做的一件事就是复制将 zip 文件中的文件放入 es 插件目录(在我们的例子中为 /usr/share/elasticsearch/plugins)。它们在 /plugins 中,但在一个目录下,这是 Elasticsearch 识别插件的名称。

仅有的 2 个问题是:

  1. 您需要知道要在 /plugins 下创建的目录名称。
  2. 您需要知道插件-descriptor.properties 文件的替换值。

如果你能做到这一点,你就可以启动 ES,它应该可以正常加载所有内容。