部署图解
在 nginx 中部署 分词文件,如:word ,该文件中是分词,一个分词占一行,可通过 url 访问
在 ik中有一个配置文件 IKAnalyzer.cfg.xml,配置 远程自定义分词的url
部署 nginx docker
启动nginx容器
先启动一个nginx容器,目的是从 nginx容器中 复制出配置文件,然后就停止、删除该容器
docker run -p 8080:80 --name nginx -d nginx:1.18
创建 nginx目录
用于保存 nginx 配置文件、日志文件等
mkdir -p /mydata/nginx
将容器中配置文件复制到宿主机
docker container cp nginx:/etc/nginx/conf.d /mydata/nginx
执行成功后,在 /mydata/nginx 目录下 有 conf.d 目录,该目录下 default.conf 是配置文件
停止原容器
docker stop nginx
删除原容器
docker rm nginx
创建真正的 nginx容器
docker run -p 8080:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf.d:/etc/nginx/conf.d \
-d nginx:1.18
宿主机端口是 8080
相关目录
如下图:
conf.d:该文件夹是配置文件html:该文件夹是页面logs:日志目录
测试nginx是否部署成功
创建页面
进入 html 目录下:
cd html
创建 index.html 文件:
vi index.html
内容如下:
<html>
<body>
hello world
</body>
</html>
保存
访问测试
访问 http://192.168.58.101:8080/ 能够正常显示页面,说明部署正确
创建分词文件
创建目录
创建 /mydata/nginx/html/es 目录,用于保存 es 相关的分词文件:
mkdir -p /mydata/nginx/html/es
创建分词文件
进入 /mydata/nginx/html/es 目录:
cd /mydata/nginx/html/es
创建 word.dic 文件,该文件内容是自定义分词:
vi word.dic
内容如下:
马育民
李雷
保存为 UTF-8 文件
测试是否能访问
打开浏览器访问:http://192.168.58.101:8080/es/word.dic ,能够访问即可,中文乱码正常
修改 ik 配置
进入到下面目录:
cd /mydata/elasticsearch/plugins/ik/config/
编辑 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"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<entry key="remote_ext_dict">http://192.168.58.101:8080/es/word.dic</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
保存退出
解释:
<entry key="remote_ext_dict">http://192.168.58.101:8080/es/word.dic</entry>
在配置远程扩展字典
重启 es
查看es容器的id:
docker ps -a
根据容器id重启:
docker restart id
测试分词
测试一:
再次执行下面分词:
get /myblog/_analyze
{
"analyzer":"ik_smart",
"text":"马育民的博客"
}
执行结果如下,可以正确分词:
{
"tokens" : [
{
"token" : "马育民",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "的",
"start_offset" : 3,
"end_offset" : 4,
"type" : "CN_CHAR",
"position" : 1
},
{
"token" : "博客",
"start_offset" : 4,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 2
}
]
}
测试二
再次执行下面分词:
get /myblog/_analyze
{
"analyzer":"ik_max_word",
"text":"李雷的博客"
}
执行结果如下,可以正确分词:
{
"tokens" : [
{
"token" : "李雷",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "的",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 1
},
{
"token" : "博客",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 2
}
]
}
添加新的分词
在有新的词,就填入到下面文件中:
/mydata/nginx/html/es/word.dic
每个词占一行
注意
保存后,需要 等待几秒,es才能检测到文件变化,才能正确的使用新的分词
如果不行,就重启 es

