1.下载镜像
docker pull elasticsearch:7.4.2
2.创建实例
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
如果启动实例失败,修改目录权限
chmod -R 777 /mydata/elasticsearch
2.1打开浏览器访问
http://192.168.73.101:9200
2.2出现以下界面则证明成功
3.安装ik分词器
ik分词器的版本需要和es的版本一致
7.4.2版本下载地址
所有版本的下载地址
网速慢的可以挂个梯子,下载后缀为.zip的文件
3.1上传文件到虚拟机
将文件上传到/mydata/elasticsearch/plugins
目录下,我们在创建容器时挂载了该目录,在外面的目录上传,容器内部也会有。
上传完后可以进入容器内部进行验证
docker exec -it 容器id /bin/bash
使用unzip解压文件,并指定目录为当前文件夹下的ik目录,目录不存在的话会自动创建
unzip -d ./ik elasticsearch-analysis-ik-7.4.2.zip
解压完后要删除原来的zip文件
rm -rf elasticsearch-analysis-ik-7.4.2.zip
修改目录权限
chmod -R 777 ik/
如果没有unzip指令,使用以下指令安装
yum install unzip
进入容器内部验证ik分词器
docker exec -it 容器id /bin/bash
进入bin目录
用以下指令验证插件
使用Kibana测试
POST _analyze
{
"analyzer": "ik_smart",
"text": "安欣和高启强"
}
结果
{
"tokens" : [
{
"token" : "安",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "欣",
"start_offset" : 1,
"end_offset" : 2,
"type" : "CN_CHAR",
"position" : 1
},
{
"token" : "和",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 2
},
{
"token" : "高",
"start_offset" : 3,
"end_offset" : 4,
"type" : "CN_CHAR",
"position" : 3
},
{
"token" : "启",
"start_offset" : 4,
"end_offset" : 5,
"type" : "CN_CHAR",
"position" : 4
},
{
"token" : "强",
"start_offset" : 5,
"end_offset" : 6,
"type" : "CN_CHAR",
"position" : 5
}
]
}
4.自定义扩展词库
在使用ik分词器的时候,有些网络用词并不能分析出来,我们可以对词库进行一个扩展。
安装nginx,这一步用于拷贝nginx的配置文件
docker run -p 80:80 --name nginx -d nginx:1.10
将容器内的配置文件拷贝到指定目录
docker container cp nginx:/etc/nginx /mydata/
做完上面这件事,就可以把我们刚刚创建的那个nginx容器删掉了
docker stop 容器id
docker rm 容器id
将刚刚拷贝的nginx目录重命名为conf,重新创建一个新的nginx目录,将conf目录移动到新的nginx目录下
mv nginx conf
mkdir nginx
mv conf 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
启动成功后进入/mydata/nginx/html
下新建index.html
文件,写入以下内容
<h1>Hello World</h1>
然后访问对应的ip地址,端口号为80,出现以下界面证明nginx已经跑通了
继续在/mydata/nginx/html
下新建es目录,然后进入es目录创建fenci.txt文件
mkdir es
cd es
vim fenci.txt
然后加入需要分词的内容
安欣
高启强
接着在ik分词器中进行配置,进入到ik分词器的目录下,我这里的目录是/mydata/elasticsearch/plugins/ik/
接着进入config目录,修改IKAnalyzer.cfg.xml
文件
修改前是这样的
修改后是这样的
配置完后需要重启es,重启后再测试分词效果
以上仅供学习参考