有两种方式:

1、本地加载,每次修改后需要重启es服务器

2、远程加载,动态更新(通过接口获取词典内容)

需要修改的配置文件:
E:\es\es7.0\elasticsearch-7.0.0-windows-x86_64\elasticsearch-7.0.0\plugins\ik\config\IKAnalyzer.cfg.xml
实际的地址,更换为自己的即可

一、加载本地词典

1、创建使用中文分词器的测试索引test,设置分词器

  1. PUT /test
  2. {
  3. "mappings": {
  4. "properties": {
  5. "id": {
  6. "type": "keyword"
  7. },
  8. "farm_name": {
  9. "type": "text",
  10. "analyzer": "ik_max_word",
  11. "search_analyzer": "ik_smart"
  12. }
  13. }
  14. }
  15. }

2、自定义词典配置

配置ext_dict的词典,多个词典用分号分隔。红色部分为要修改的配置
我这里定义的词典就在config目录下,所以直接指定文件名即可。
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE properties SYSTEM “http://java.sun.com/dtd/properties.dtd”>

IK Analyzer 扩展配置

custom.dic;custom2.dic;





3、添加词典内容,多个词语换行书写

image.png
image.png

4、测试效果,查看分词效果。可以看到两个自定义分词中的文件都可以正确加载并分词了

image.png
image.png
image.png

二、加载远程词典

1、提供远程词典接口(本文使用nginx发布词典)

(1)配置nginx,添加nginx配置

  1. server {
  2. listen 9070;
  3. server_name localhost;
  4. location / {
  5. root d://config/;
  6. }
  7. }

image.png

(2)测试一下,是否发布成功,确保能够获取到文件

image.png

(3)添加词典内容

image.png

(4)分词测试

image.png

(5)不重启es,修改remote.dir内容。添加词典内容

image.png

(6)再次测试,查看效果

image.png

2、配置远程字典接口位置,红色部分为配置的远程接口地址

(1)修改配置,配置远程字典接口位置

<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE properties SYSTEM “http://java.sun.com/dtd/properties.dtd”>

IK Analyzer 扩展配置

custom.dic;custom2.dic;



http://localhost:9070/remote.dir