Docker搭建Elasticsearch服务及Kibana可视化界面与IK分词插件

① Elasticsearch

1.Elaticsearch下载

docker下载命令:

docker pull elasticsearch:7.14.2

2.创建挂载目录

我们需要将Elasticsearch里的三个文件夹挂载在本机上 方便管理

  1. /usr/share/elasticsearch/config/elasticsearch.yml 配置文件
  2. /usr/share/elasticsearch/data 数据目录
  3. /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搜索引擎"
}

得到以下结果即表示安装成功
在这里插入图片描述


版权声明:本文为weixin_44854986原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。