elasticsearch - 无法安装 search-guard -“错误:插件 zip 中缺少 `elasticsearch` 目录”
问题描述
正如主题所述,我在尝试为我的 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-xxxjar 中的 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 plugins 目录(/usr/share/elasticsearch/plugins
在我们的例子中)。它们位于 /plugins 中,但位于一个目录下,这是 Elasticsearch 知道插件的名称。
唯一的两个陷阱是:
- 您需要知道要在 /plugins 下创建的目录名称。
- 您需要知道 plugin-descriptor.properties 文件的替换值。
如果你能做到这一点,你可以启动 ES,它应该可以正常加载所有内容。
推荐阅读
- javascript - WordPress 网站上的奇怪 JS 警报
- c# - 从 ConcurrentDictionary 中删除项目
- c++ - 在模板类中使用 auto 的类使用不完整
- sublimetext3 - 如何在多个 SublimeText 项目中共享 ESlint 设置
- cocoa - 如何在 NSPopUpButton 中创建命名部分
- angularjs - 使用 Spring Boot 上传多个文件
- reactjs - Webpack 不提供 React 组件
- firebase - Firebase - 云函数 - “错误:需要使用事件参数调用云函数。”
- html - 在客户端丰富/基于 AJAX 的应用程序中设计登录模块
- netlify - 构建后如何更改 Netlify 文件