Elassandra安装ingest-attachment插件报jar hell错误解决方法
问题根因
Elassandra 6.2.3.38 版本执行bin/elasticsearch-plugin install ingest-attachment时抛出jar hell报错,是插件包内置的slf4j-api-1.6.2.jar与Elassandra系统lib目录自带的slf4j-api-1.7.25.jar版本重复,触发插件安装阶段的类冲突校验,直接终止安装流程。
可落地解决步骤
- 先下载与Elassandra 6.2.3.38 内置ES版本严格对齐的ingest-attachment离线包:Elassandra 6.2.3.x 对应兼容Elasticsearch 6.2.3版本的插件,版本号不匹配会触发额外的版本校验失败问题,不推荐直接使用在线安装命令拉取未适配的插件包。
- 解压下载到的ingest-attachment离线压缩包,进入解压后的插件根目录,直接删除目录内的
slf4j-api-1.6.2.jar文件。插件运行时会优先加载Elassandra系统lib目录下的高版本slf4j依赖,删除插件自带的低版本冲突包不会影响插件的附件解析功能。 - 进入Elassandra安装路径下的
plugins目录,新建名为ingest-attachment的文件夹,将删除冲突jar后的所有插件文件全部拷贝到该文件夹内,将文件夹及内部所有文件的属主调整为Elassandra运行用户,避免权限不足导致插件加载失败。 - 进入新建的
ingest-attachment插件目录,编辑plugin-descriptor.properties配置文件,确认elasticsearch.version配置项的值为6.2.3,和当前Elassandra内置的ES版本完全一致,若值不匹配直接修改后保存。 - 重启Elassandra节点,节点启动完成后执行
bin/elasticsearch-plugin list命令,若返回结果中包含ingest-attachment即代表插件安装成功,可通过创建附件解析pipeline验证功能可用性。
注意:绝对不要通过替换Elassandra系统lib目录下
slf4j-api-1.7.25.jar为低版本的方式解决冲突,会直接导致Elassandra日志模块、Cassandra内核相关依赖报错,引发节点无法启动的问题。
内容的提问来源于stack exchange,提问作者Cpp crusaders
相关产品推荐
相关产品推荐

