说明:本篇文章讲述elasticsearch分词器插件的安装,热词库停止词库的拓展,文章后面提到elasticsearch ,都是以es简称。
以下分词器的安装以ik分词器和pinyin分词器为例说明,使用的操作系统是Linux,使用的分词器器版本是6.5.4版本,对应的es版本也是6.5.4(写这篇文章时对应最新es是7.2版本),这里需要强调的是分词器插件和es版本一定要一致,否则容易导致问题,比如,
我的pinyin分词器最早使用的是6.5.2,觉得与es版本相差不远,应该能支持,实际安装后,因为pinyin分词器版本问题导致es启动失败。
1、ik分词器的安装(Linux)
安装:
1.1 、将分词器拉取到es安装所在服务器的es安装主目录的{ES_HOME}/plugins 目录下
1.2、解压ik分词器 unzip elasticsearch-analysis-ik-6.5.4.zip -d ik
1.3、重启es服务器
1.4、执行命令 cd {ES_HOME}/logs 切换到日志目录,tail -1000f elasticsearch.log 看下是否日志报错,没有报错说明启动正常,安装插件成功。
2、ik分词器扩展
2.1、切换到刚刚安装的ik分词器插件配置目录目录 cd {ES_HOME}/plugins/ik/config
2.2、执行ls 命令可以看到,以下文件列表:extra_main.dic extra_single_word.dic extra_single_word_full.dic extra_single_word_low_freq.dic extra_stopword.dic IKAnalyzer.cfg.xml main.dic preposition.dic quantifier.dic stopword.dic suffix.dic surname.dic
2.3、以上看到的.dic结尾的 文件,是ik的一些默认词库,实际上你可以打开修改默认词库,但是需要重建索引,并且重新导入数据才会生效。
2.4、这里比较重要的文件是IKAnalyzer.cfg.xml,执行 vi IKAnalyzer.cfg.xml 打开文件,可以看到如下内容:
IK Analyzer 扩展配置
http://deploy_ip:port/myweb/myHotDic.txt
这里可以添加自己拓展字典,也可以远程扩展,这里结合业务逻辑拓展远程字典,这样就可以通过地址直接访问这些字典,远程拓展字典可以通过web服务来维护,配置好后,重启es,使得配置生效。
重启后, 在新增热词字段,不需要重启,但时有个问题,就是对于已经同步入库的(即历史同步的数据),新增加的热词无法生效。
3、拼音分词器安装
1.1 、将分词器拉取到es安装所在服务器的es安装主目录的{ES_HOME}/plugins 目录下
1.2、解压ik分词器 unzip elasticsearch-analysis-pinyin-6.5.4.zip -d pinyin
1.3、重启es服务器
1.4、执行命令 cd {ES_HOME}/logs 切换到日志目录,tail -1000f elasticsearch.log 看下是否日志报错,没有报错说明启动正常,安装插件成功。
结语:分词器虽好,但是了解一些分词器特定是必要,比如,ik分词器将"普通高中"分隔为一个词,这样如果搜索内容中包含这个,搜索"高中"这个词是搜索不到的,但是如果,内容里面包含”普通的高中“,那么搜索”高中“就可以搜索到这条内容。
另外,分词器拓展热词库在web服务里面维护终究需要人肉去做的,如果能够在搜索过程中自动提取热词并且拓展ik不存在的,而又需要的热词就完美了