博客详情

elasticsearch5中ik词库远程热加载 (原创)

作者: 朝如青丝暮成雪
发布时间:2018-04-30 19:04:09  文章分类:elasticsearch   阅读(1794)  评论(0)

如题,本篇我们介绍下如何让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,否则可能会有问题 。

   


 <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
  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会自动重新加载)

      看下效果哦~~  ,

      

      

     




关键字:  elasticsearch  java
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号