Elasticsearch学习四部曲之二:快速进行环境搭建
docker安装elasticsearch
小经验
关于为什么要安装7.6.2这个版本?
是因为后续整合springboot的版本是2.3.1.RELEASE, 该版本依赖的es版本是7.6.2, 所以保持一致
拉取镜像
docker pull elasticsearch:7.6.2
启动镜像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.6.2
关于启动的部分参数解释
ES_JAVA_OPTS="-Xms512m -Xmx512m" 大多数小伙伴应该都是在虚拟机上安装这些服务, 可能虚拟机的内存给的不是很大, 而ES启动默认需要2G内存, 所以将默认内存改小了
"discovery.type=single-node"学习阶段没必要搭建集群, 设置为单节点, 跳过一些检查
安装检查
浏览器输入http://localhost:9200/ 出现下图表示安装完成
docker安装elasticsearch-head
拉取镜像
docker pull mobz/elasticsearch-head:5
启动镜像
docker run -d --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
安装检查
浏览器输入http://localhost:9100/ 出现下图表示安装完成
注意: 此时由于跨域问题还连接不上elasticsearch
配置elasticsearch-head与elasticsearch的连接
进入容器
docker exec -it elasticsearch /bin/bash
修改配置
vi config/elasticsearch.yml
配置最下边添加这两行(允许跨域访问)
http.cors.enabled: true
http.cors.allow-origin: "*"
保存后退出容器
exit
重启容器
docker restart elasticsearch
浏览器再次输入http://localhost:9100/ , 在连接按钮前的地址栏输入http://localhost:9200, 点击连接后, 出现下图表示连接配置完成
解决elasticsearch-head操作时, 请求406异常
将elasticsearch-head中文件拷贝到本地
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js /usr/local/
修改vendor.js
vim /usr/local/vendor.js
共计两处, 分别在6886行和7573行, 这两处contentType的值改为 application/json;charset=UTF-8
从本地copy到容器内
docker cp /usr/local/vendor.js elasticsearch-head:/usr/src/app/_site
重启容器
docker restart elasticsearch-head
尝试head中创建索引, 出现改弹窗表示成功
elasticsearch安装id分词器插件
方式一:在线安装
进入容器
docker exec -it elasticsearch /bin/bash
在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
当上述操作连接超时将github.com改为github.com.cnpmjs.org再试一次
退出容器并重启
exit
docker restart elasticsearch
方式二:离线安装
下载离线包
下载elasticsearch-analysis-ik-7.6.2,我是通过加速访问下载的,不保证安全性
原访问地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases
加速访问地址:
https://github.com.cnpmjs.org/medcl/elasticsearch-analysis-ik/releases
建议先使用原访问地址,原访问地址无法下载时,再采用加速的
上传离线包至服务器
该处自行上传,因为我用的Docker Desktop,直接就在本地
开始安装
进入容器
docker exec -it elasticsearch /bin/bash
创建文件夹
mkdir /usr/share/elasticsearch/plugins/ik
退出容器,并将本地的包复制到容器内
docker cp /usr/local/elasticsearch-analysis-ik-7.6.2.zip elasticsearch:/usr/share/elasticsearch/plugins/ik
再次进入容器
docker exec -it elasticsearch /bin/bash
解压上传的文件包
unzip elasticsearch-analysis-ik-7.6.2.zip
删除原文件包
rm -rf elasticsearch-analysis-ik-7.6.2.zip
退出容器,并重启
exit
docker restart elasticsearch
安装完后验证
IK分词器自定义分词
进入容器
docker exec -it elasticsearch /bin/bash
进入ik配置
cd /usr/share/elasticsearch/plugins/ik/config
修改IKAnalyzer.cfg.xml
vi IKAnalyzer.cfg.xml
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">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
在config目录下新建ext.dic文件
vi ext.dic
例如: 添加字符串"我草"
退出容器并重启
exit
docker restart elasticsearch
验证分词结果