前言

今天有一位球友反馈,说我之前部署的新环境中的ElasticSearch没有安装ik分词器。

前一段时间,我在新环境中重新部署了一套中间件的服务,包含了:Redis、ElasticSearch、RabbitM、RocketMQ等。

但当时部署了ElasticSearch之后,确实忘记了安装ik分词器插件。

今天我打算安装一下。

但遇到了一个版本不一致的问题。

1 案发现场

在安装ik插件之前,需要先确定一下之前安装的ElasticSearch服务器的版本。

我之前推荐大家使用chrome插件:Elasticvue,来管理和维护ElasticSearch。

image

在Elasticvue上查到安装的ElasticSearch服务端的版本是:7.17.23。

于是,我打算去ik官方下载一个对应的版本。

访问地址:https://github.com/infinilabs/analysis-ik/releases?page=2

image

让人意外的是ElasticSearch7对应的ik分词器的最高版本是:7.17.18。

二者不一样。

管不了,那么多了。

我将7.17.18这边版本的ik分词器下载下来,放到了云服务器的/usr/share/elasticsearch/plugins目录下的ik目录下。

重启ElasticSearch之后发现报错了。

java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 7.17.23 but version 7.17.18 is running

原因是Elasticsearch和ik版本不一致。

2 如何解决问题?

ElasticSearch和ik版本不一致,一个的版本是:7.17.23,另一个的版本是:7.17.18,导致Elasticsearch服务启动失败了。

但ik的官方,并没有提供7.17.23这个版本,7以上的最高也只有7.17.18。

于是,我尝试了一下ik的8以上的版本,下载了8.11.1这个版本,重启ElasticSearch同样失败了。

看样子,只能让二者的版本一致,才能成功启动ElasticSearch了。

我此时,脑海中闪过的第一个念头是:直接重装ElasticSearch,安装7.17.18这个版本。

这样就能解决问题了。

但想到之前在云服务器上安装ElasticSearch花费了不少时间,包括修改一些配置,还有分配权限等。

如果花费的时间太久了,有点不太划算。

而且很多球友在开发商城项目时,需要用到ElasticSearch。

我在重新安装的过程中,可能会影响到他们的正常使用。

因此,我没有使用这套方案。

接下来,我看了看ik目录下的文件:

image

主要包含了一些jar和配置文件。

此时,我突然冒出一个想法:7.17.23和7.17.18,这两个版本差距不大,应该没有太多的改动。

为什么我不能直接将ik目录下的jar包名称和配置文件中的版本,直接改成7.17.23呢?

将elasticsearch-analysis-ik-7.17.18.jar文件名称改成了elasticsearch-analysis-ik-7.17.23.jar。

修改了plugin-descriptor.properties文件:

image

将其中的两个version的版本改成了7.17.23。

这样调整之后,重启ElasticSearch,发现可以正常启动了。

然后,我用Elasticvue插件测试了一下:

image

发现可以将:我是中国人 正确分词。

说明在ElasticSearch中安装ik分词器插件成功了。

我们有时候遇到问题,在网上查资料,不一定能够找不到答案。

搜索引擎也许没法帮助你,官方也没法帮到你。

此时,你通过查看源码或许可以解决问题。

最后修改:2026 年 06 月 06 日
如果觉得我的文章对你有用,请随意赞赏