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文件中的版本号,如果和分词器不一致,修改一下。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐