0
点赞
收藏
分享

微信扫一扫

ES相关(elasticsearch)

干自闭 2023-10-18 阅读 94

ES相关(elasticsearch)

远程配置txt文件

增加两个远程txt(http://***)http可以访问的 可以是在nginx中静态文件

分别作为配置远程扩展字典远程扩展停止词字典 ,

编写接口需要返回特定header 和 \n格式

  1. 该 http 请求需要返回两个头部(header),一个是 Last-Modified,一个是 ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。
  2. 该 http 请求返回的内容格式是一行一个分词,换行符用 \n 即可。
    满足上面两点要求就可以实现热更新分词了,不需要重启 ES 实例。

修改es配置词典

..\elasticsearch-6.3.0\config\analysis-ik\IKAnalyzer.cfg.xml

<?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">extra_main.dic</entry>
     <!--用户可以在这里配置自己的扩展停止词字典 ( 不进行分词的词)-->
    <entry key="ext_stopwords">extra_stopword.dic</entry>
    <!--用户可以在这里配置远程扩展字典 (新增的进行分词的词)-->
     <entry key="remote_ext_dict">http://127.0.0.1:8080/qryRemoteExtDict</entry>
    <!--用户可以在这里配置远程扩展停止词字典 (新增的不进行分词的词)-->
     <entry key="remote_ext_stopwords">http://127.0.0.1:8080/qryRemoteExtStopWords</entry> 
</properties>

远程词典不生效原因:

java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:8080" "connect,resolve")

原因: 这种情况是不允许程序向客户端读写文件 所以我们必须人为让客户端授权允许这样的操作。

解决方式:

1:打开 查看jdk:C:\java\jdk1.8.0_311\jre\lib\security\java.policy

2:在以上文件grant内编辑:

permission java.security.AllPermission;
        permission java.util.PropertyPermission "G:\\*", "read";
        permission java.io.FilePermission "G:\\*", "read,write";

3:打开es的config文件,创建ik-plugin.policy 内容为 以上 内容并新增

permission java.net.SocketPermission "127.0.0.1:8080", "connect,resolve";

4:修改 config 文件下的 jvm.options ,最底下增加

-Djava.security.policy=/home/zshs/dev/elasticsearch-6.3.0/config/ik-plugin.policy

另外做一个工具来从业务系统提取相关词汇, 并更新这个 .txt 文件


举报

相关推荐

0 条评论