ElasticSearch 分词
上文说到ElasticSearch 映射的学习,本文简单学习分词
Text Analysis
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/analysis.html#analysis
分词器会将字符流分为多个词语 以便检索
POST _analyze
{
"analyzer": "standard",
"text": "the shy rookie jeacklove ning baolan"
}
安装ik分词器
ES中没有中文的分词器
所以需要在ES中安装插件 IK分词器
因为ES容器挂载到了服务器中的/mydata/elasticsearch/plugins
下,所以只需要在该目录下安装ik分词器就可以了
进入后下载 ik 分词器 并解压到ik文件夹
mkdir ik
cd ik
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.2/elasticsearch-analysis-ik-7.13.2.zip
unzip elasticsearch-analysis-ik-7.13.2.zip -d ik
rm -rf elasticsearch-analysis-ik-7.4.2.zip
chmod 777 -R ./ik
docker start elasticsearch
#进入容器
docker exec -it elasticsearch /bin/bash
#在bin目录中执行 elasticsearch-plugin list
cd bin
#显示安装的插件 出现ik 说明成功
elasticsearch-plugin list
ik分词器有2个常用的分词器ik_smart
和 ik_max_word
自定义扩展词库
如果ik词库中没有把我们想要的词进行分词,可以自定义扩展ik分词器的词库
把词库写到nginx上,让ik去访问nginx服务器的词库资源加载词库
创建并启动nginx容器
docker pull nginx:1.10
# 随便启动一个nginx实例,只是为了复制出配置,放到docker里作为镜像的统一配置
docker run -p 80:80 --name nginx -d nginx:1.10
cd /mydata/nginx
docker container cp nginx:/etc/nginx .
然后在外部 /mydata/nginx/nginx 有了一堆文件
mv /mydata/nginx/nginx /mydata/nginx/conf
# 停掉nginx
docker stop nginx
docker rm nginx
# 创建新的nginx
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
# 注意一下这个路径映射到了/usr/share/nginx/html,我们在nginx配置文件中是写/usr/share/nginx/html,不是写/mydata/nginx/html
docker update nginx --restart=always
nginx访问路径默认在html目录下,在html目录下创建es目录,在es目录下创建词库资源
我的nginx设置端口为81 (不管乱码)
修改/mydata/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
重启es容器
未配置远程扩展词库字典时
配置远程扩展词库字典后
下篇文章将简单介绍项目整合ElasticSearch