Docker搭建Elasticsearch服务及Kibana可视化界面与IK分词插件
① Elasticsearch
1.Elaticsearch下载
docker下载命令:
docker pull elasticsearch:7.14.2
2.创建挂载目录
我们需要将Elasticsearch里的三个文件夹挂载在本机上 方便管理
- /usr/share/elasticsearch/config/elasticsearch.yml 配置文件
- /usr/share/elasticsearch/data 数据目录
- /usr/share/elasticsearch/plugins 插件目录
首先在本机创建挂载目录
mkdir -p /usr/etc/elasticsearch/config /usr/etc/elasticsearch/data /usr/etc/elasticsearch/plugins
chmod -R 777 /usr/etc/elasticsearch
-p:当父目录不存在时 一并创建
因为数据挂载需要权限 所以chmod命令把elasticsearch目录及其子目录权限改为所有用户与组 可读可写可执行
创建配置文件elasticsearch.yml并设置elasticsearch服务访问权限
echo "http.host: 0.0.0.0" >> /usr/etc/elasticsearch/config/elasticsearch.yml
这样写可以直接创建出elasticsearch.yml并把内容追加到文件中
▲:注意 冒号后面要有一个空格 否则报错:
Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]];
3.启动容器
① 如果启动时报错:
java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
请检查本机挂载目录/usr/etc/elasticsearch目录及其子目录的权限是否开启
请保证elasticsearch及其子目录权限如下所示
并且有些朋友权限也设置了但还是报“AccessDeniedException”异常 请确认你的启动命令中有使用--privileged=true
命令
② 若报错
java.lang.OutOfMemoryError: Java heap space
请调整Elasticsearch启动运行内存大小
启动命令如下:
docker run --name elasticsearch7.14.2 --privileged=true \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms128m -Xmx256m" \
-v /usr/etc/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/etc/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/etc/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.14.2
命令 | 解释 |
---|---|
–privileged=true | 给docker容器内部赋予真正的root权限 |
-p 9200:9200 | 指定端口映射 9200是elasticsearch与外部交互的端口 9300是集群间交互的端口 |
-e “discovery.type=single-node” | 指定elasticsearch单机启动 |
ES_JAVA_OPTS="-Xms64m -Xmx128m" | 指定elasticsearch运行使用内存大小 测试时请按实际设置 否则可能导致无法启动elasticsearch |
-v … | 将主机文件目录挂载到docker容器内部 方便管理 |
-d | 指定docker容器后台运行 |
4.测试
浏览器中输入
虚拟机IP:9200
可以看到Elasticsearch的信息即启动成功
② 可视化Kibana
请在启动完成Elasticsearch后启动Kibana
1.Kibana下载
docker pull kibana:7.14.2
ps: 请注意,kibana安装版本请与Elasticsearch一致
2.启动容器
启动命令如下:
docker run --name kibana7.14.2 \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://192.168.32.99:9200" \
-d kibana:7.14.2
命令 | 解释 |
---|---|
-e “ELASTICSEARCH_HOSTS=http://192.168.32.99:9200” | 指定Elasticsearch服务启动地址 请修改为实际的服务地址,请注意 一定要添加http://前缀 否则启动失败 |
3.测试
在浏览器输入以下地址:
虚拟机IP:5601
③ 分词器elasticsearch-analysis-ik
简单说明一下:由于Elasticsearch默认分词器无法匹配中文词组,会导致在分词时将中文字符串拆分成一个个的字,而没有词组的概念,所以安装中文分析分词器ES-IK
1.下载ES-IK
请到ES-IK GITHUB仓库下载压缩包
地址:EK-IK GITHUB下载地址
2.安装ES-IK
- 通过工具XFTP上传ES-IK压缩包到Elasticsearch的挂载插件目录/usr/share/elasticsearch/plugins中
- 解压ES-IK压缩包并删除
unzip -d ./ik elasticsearch-analysis-ik-7.14.2.zip
将压缩包解压到当前目录下的ik目录中
rm elasticsearch-analysis-ik-7.14.2.zip
删除ES-IK 压缩包
- 重启Elasticsearch服务使插件生效
docker restart elasticsearch7.14.2
3.测试
在Kibana可视化界面 DevTools模块中使用命令如下:
GET /_analyze
{
"analyzer": "ik_smart",
"text": "Elasticsearch搜索引擎"
}
得到以下结果即表示安装成功