ES安装分词器后启动失败,闪退

本文讲述了在Windows环境下安装Elasticsearch插件IK分词器遇到的版本不兼容问题,解决步骤包括确认版本、重新编译分词器、正确打包和配置,强调了分词器与ES版本的一致性和编译过程的重要性。
摘要由CSDN通过智能技术生成
1、windows下,es安装分词器插件,直接从github(https://github.com/medcl/elasticsearch-analysis-ik)上下载了zip包,解压出来放在es安装目录下的plugins目录下,重启es,启动失败,闪退。

查看日志(在和bin同级目录的log目录下的elasticsearch.txt)

Caused by: java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 8.4.1 but version 7.17.6 is running
	at org.elasticsearch.plugins.PluginsService.verifyCompatibility(PluginsService.java:391) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:700) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:533) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:170) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.node.Node.<init>(Node.java:411) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.node.Node.<init>(Node.java:309) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:234) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:234) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:434) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169) ~[elasticsearch-7.17.6.jar:7.17.6]
	... 6 more
2、根据这个日志说是分词器和es版本不匹配,es的版本是7.17.6,而分词器的版本是8.4.1,不适用。重新下载,

找到7.17.6的版本重新尝试,还是不能启动,继续看日志:

[2022-10-18T19:09:54,903][ERROR][o.e.b.Bootstrap          ] [MQ] Exception
java.lang.IllegalStateException: Could not load plugin descriptor for plugin directory [elasticsearch-analysis-ik-7.17.6]
	at org.elasticsearch.plugins.PluginsService.readPluginBundle(PluginsService.java:462) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.plugins.PluginsService.findBundles(PluginsService.java:436) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.plugins.PluginsService.getPluginBundles(PluginsService.java:429) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:158) ~[elasticsearch-7.17.6.jar:7.17.6]
	at org.elasticsearch.node.Node.<init>(Node.java:411) ~[elasticsearch-7.17.6.jar:7.17.6]
3、说是加载不了插件,找了资料才知道,是分词器的包有问题。这个直接从github下载的zip是不能用的!!!

正确的使用方法:

(1)、下载之后首先解压,然后进入目录

(2)、然后cmd命令窗口,依次执行这三条maven命令:mvn clean、mvn compile、mvn package
(es是java写的,分词器也是,最终我们要用它是要经过编译的,这里其实就相当于在自己的机器上重新编译打包了一次)

(3)、然后在这个目录下会生成target目录,进入target后再进入releases目录,这里面会经过编译打包成一个可以用的zip文件。

在这里插入图片描述

(4)、把这个文件解压之后,整个放在es安装目录的plugins目录下
在这里插入图片描述

(5)、然后进入bin,重新启动。

再运行又报错:(上面这个流程是没错的,报错是其他问题)

Plugin [analysis-ik] was built for Elasticsearch version 7.16.0 but version 7.17.6 is running
4、还是分词器版本的问题,可是奇怪,下的版本和es明明是一致的啊

找的资料说是分词器编译之后的包里的一个配置文件:plugin-descriptor.properties,这个文件中的分词器版本号没有改过来,其实只改这里还不够,这个是打包的时候生成的,所以还是回到从github下载zip包的地方,发现他pom文件中的版本号和它自己不匹配:

在这里插入图片描述

修改这个文件之后重新编译打包,把新打成的包放在es的plugins目录下,去bin下重启

搞定收工。

总结一下:

1、使用es分词器的时候,分词器版本和es版本必须保持一致

2、从github上下载的zip包不能直接使用使用,需要重新编译、打包

3、从github上下载的zip解压之后,看一下pom文件中的版本号,如果和分词器不一致,修改一下。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值