elasticsearch5中ik词库远程热加载
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jasnet_u/article/details/80220225
如题,本篇我们介绍下如何让ES自动从远程服务器中获取最新的词库(热加载,无须重启ES服务)。
IK自定义词库是支持远程热加载的,配置起来也非常简单。
IK自定义词库是支持远程热加载的,配置起来也非常简单。
先看下官方的说明 :
remote_ext_dict
该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。
该 http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。
满足上面两点要求就可以实现热更新分词了,不需要重启 ES 实例。
可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里,放在 nginx 或其他简易 http server 下,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。
一、在 IKAnalyzer.cfg.xml 配置文件中配置remote_ext_dict指向远程词库地址
这里,我指向的是服务器本地搭建的一个nignx静态web服务。
注意: nginx服务器的默认编码需要设为utf-8,否则可能会有问题 。
-
“1.0” encoding=“UTF-8” xml version=
-
-
properties>
-
<comment>IK Analyzer 扩展配置</comment>
-
<!–用户可以在这里配置自己的扩展字典 –>
-
<entry key=“ext_dict”></entry>
-
<!–用户可以在这里配置自己的扩展停止词字典–>
-
<entry key=“ext_stopwords”></entry>
-
<!–用户可以在这里配置远程扩展字典 –>
-
<entry key=“remote_ext_dict”>http://localhost/my_ext_ikword.txt</entry>
-
<!–用户可以在这里配置远程扩展停止词字典–>
-
<!– <entry key=”remote_ext_stopwords”>words_location</entry> –>
-
</properties>
这里 http://localhost/my_ext_ikword.txt 为我本地nginx服务器中的一个词库文件。
二、 重启 ES (启动时会自动从远程加载一次词库,后续若远程词库文件有修改,ES会自动重新加载)
看下效果 ~~
ok,”碰瓷”都能被ik分词器分析出来了。。
转载请注明:SuperIT » elasticsearch5中ik词库远程热加载