You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch 7.17.6自定义插件安装报错:找不到plugin-descriptor.properties

Elasticsearch 7.17.6自定义插件安装失败问题排查

问题背景

为Elasticsearch 7.17.6开发Java自定义插件,使用gradle distZip命令构建插件压缩包。解压压缩包后,所有文件(包括plugin-descriptor.properties)均位于根目录,但执行以下安装命令时失败:

elasticsearch-plugin install file:///plugins/elasticsearch_plugin-1.0.zip -v

报错信息

sh-5.0# elasticsearch-plugin install file:/plugins/elasticsearch_plugin-1.0.zip -v
-> Installing file:/plugins/elasticsearch_plugin-1.0.zip
-> Downloading file:/plugins/elasticsearch_plugin-1.0.zip
Retrieving zip from file:/plugins/elasticsearch_plugin-1.0.zip
[=================================================] 100%?? 
-> Failed installing file:/plugins/elasticsearch_plugin-1.0.zip
-> Rolling back file:/plugins/elasticsearch_plugin-1.0.zip
-> Rolled back file:/plugins/elasticsearch_plugin-1.0.zip
Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/plugins/.installing-4054247711532660111/plugin-descriptor.properties
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:218)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:380)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:432)
        at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:422)
        at java.base/java.nio.file.Files.newInputStream(Files.java:160)
        at org.elasticsearch.plugins.PluginDescriptor.readFromProperties(PluginDescriptor.java:183)
        at org.elasticsearch.plugins.cli.InstallPluginAction.loadPluginInfo(InstallPluginAction.java:827)
        at org.elasticsearch.plugins.cli.InstallPluginAction.installPlugin(InstallPluginAction.java:887)
        at org.elasticsearch.plugins.cli.InstallPluginAction.execute(InstallPluginAction.java:245)
        at org.elasticsearch.plugins.cli.InstallPluginCommand.execute(InstallPluginCommand.java:88)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
        at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:95)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
        at org.elasticsearch.cli.Command.main(Command.java:77)
        at org.elasticsearch.plugins.cli.PluginCli.main(PluginCli.java:36)

插件描述文件内容

plugin-descriptor.properties内容如下:

type=isolated
description=My custom plugin for Elasticsearch
version=1.0.0
name=myplugin
classname=com.example.MyPlugin
java.version=1.8
elasticsearch.version=7.17.6

临时解决方法

将压缩包复制到Docker容器内,解压后把整个文件夹移动到/usr/share/elasticsearch/plugins目录,重启容器后插件可正常加载运行。

问题原因

Elasticsearch的elasticsearch-plugin install工具要求插件压缩包的结构必须是:所有插件文件放在以插件名称(即plugin-descriptor.properties中的name字段值)命名的子目录下,而不是直接放在压缩包根目录。

使用gradle distZip构建的压缩包将文件直接放在根目录,不符合安装工具的预期结构。当工具解压压缩包到临时目录(如/usr/share/elasticsearch/plugins/.installing-xxxxxx)时,会默认去子目录中查找plugin-descriptor.properties,自然找不到根目录下的文件,导致安装失败。

手动解压后移动文件夹的操作,相当于手动创建了符合要求的目录结构,因此插件能正常被Elasticsearch识别加载。


内容的提问来源于stack exchange,提问作者Pharmakon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:01:16