微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

elasticsearch5中ik词库远程热加载

elasticsearch aide_941 27℃

elasticsearch5中ik词库远程热加载

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jasnet_u/article/details/80220225
如题,本篇我们介绍下如何让ES自动从远程服务器中获取最新的词库(热加载,无须重启ES服务)。
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. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <!DOCTYPE properties SYSTEM “http://java.sun.com/dtd/properties.dtd”>
  3. properties>
  4. <comment>IK Analyzer 扩展配置</comment>
  5. <!–用户可以在这里配置自己的扩展字典 –>
  6. <entry key=“ext_dict”></entry>
  7. <!–用户可以在这里配置自己的扩展停止词字典–>
  8. <entry key=“ext_stopwords”></entry>
  9. <!–用户可以在这里配置远程扩展字典 –>
  10. <entry key=“remote_ext_dict”>http://localhost/my_ext_ikword.txt</entry>
  11. <!–用户可以在这里配置远程扩展停止词字典–>
  12. <!– <entry key=”remote_ext_stopwords”>words_location</entry> –>
  13. </properties>

这里  http://localhost/my_ext_ikword.txt 为我本地nginx服务器中的一个词库文件。

二、 重启 ES  (启动时会自动从远程加载一次词库,后续若远程词库文件有修改,ES会自动重新加载)

看下效果 ~~

ok,”碰瓷”都能被ik分词器分析出来了。。

转载请注明:SuperIT » elasticsearch5中ik词库远程热加载

喜欢 (0)or分享 (0)