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