Centos7 docker下安装elasticsearch、ik、nginx和kibana

docker下安装elasticsearch

  • 安装elasticsearch
    • 下载镜像
    • 检查是否安装好
    • 看下虚拟机还有多少内存,内存够用就行
    • 创建配置文件目录,用于与docker中的配置文件挂载
    • 启动
    • 安装ik分词器
      • 自定义扩展词库
  • Docker安装nginx
  • Docker安装Kibana
  • 设置开机自启动

安装elasticsearch

下载镜像

docker pull elasticsearch:7.4.2      //安装elasticsearch 
docker pull kibana:7.4.2       //安装kibana

检查是否安装好

docker images

看下虚拟机还有多少内存,内存够用就行

free -m  //available:老师的是389,我的是593都够用

在这里插入图片描述

创建配置文件目录,用于与docker中的配置文件挂载

mkdir -p /mydata/elasticsearch/config     //用于创建外部挂载配置文件
mkdir -p /mydata/elasticsearch/data       //用于创建外部挂载配置文件
echo "http.host: 0.0.0.0" >>  /mydata/elasticsearch/config/elasticsearch.yml    //设置所有机器都可访问本机elasticsearch

启动

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

上述命令作用说明:

在虚拟机创建了 elasticsearch 的两个 docker 外部 挂载用文件夹
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

写入了一个配置并创建了yml配置文件, 代表可以被远程的任意 机器访问
echo “http.host:0.0.0.0” >> /mydata/elasticsearch/config/elasticsearch.yml

为容器起了一个名字elasticsearch 暴露两个端口 9200端口 向elasticsearch的restApi发送http请求的端口 9300是es在分布式集群状态下 节点之间的通讯端口
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

我这里的直接启动成功了,但是一会再看一次没有了!
处理错误:

  1. 如果启动失败,查看日志docker logs elasticsearch,显示java.nio.file.AccessDeniedException:拒绝访问
  2. 到elasticsearch下查看data目录权限 ll
    Centos7 docker下安装elasticsearch、ik、nginx和kibana_第1张图片
    把所有组的文件权限都改成rws:**chmod -R 777 /mydata/elasticsearch/ **
  3. 重新启动elasticsearch: docker start S4C
    “S4C”为docker中elasticsearch的进程号前三位,通过 docker ps -a查看
    访问 XXXX:9200 端口,出现json字符串表示访问成功!
    Centos7 docker下安装elasticsearch、ik、nginx和kibana_第2张图片

安装ik分词器

  • https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v7.6.2 找到与自己es版本相同的ik下载到本地,并解压到新建的ik文件夹(我的是7.4.2)

Centos7 docker下安装elasticsearch、ik、nginx和kibana_第3张图片使用xftp,将ik文件夹放到es的plugins目录(安装完成…)
到镜像中测试
Centos7 docker下安装elasticsearch、ik、nginx和kibana_第4张图片出现ik,表示安装上了。在postman中测试
Centos7 docker下安装elasticsearch、ik、nginx和kibana_第5张图片

自定义扩展词库

修改分词器配置文件,指定一个远程词库,让ik分词器远程发送请求得到最新单词:
Centos7 docker下安装elasticsearch、ik、nginx和kibana_第6张图片远程项目如何实现:

  1. 写一个项目,处理请求返回新单词,让ik分词器给项目发送请求
  2. 把最新词库放到nginx中,让ik给nginx发送请求

这里使用2的方式,所以先安装nginx
修改内存:
使用free -m看一下内存,如果内存太小,关闭虚拟机增加一下
Centos7 docker下安装elasticsearch、ik、nginx和kibana_第7张图片把虚拟机内存改为3g,把es最大内存改为512
//停止容器
docker stop elasticsearch
//删除容器
docker rm elasticsearch
//创建容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300
-e “discovery.type=single-node”
-e ES_JAVA_OPTS="-Xms64m -Xmx512m"
-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

Docker安装nginx

Centos7 docker下安装elasticsearch、ik、nginx和kibana_第8张图片

docker run -p 80:80 --name nginx -d nginx:1.10
mkdir nginx //mydata文件夹下
docker container cp bac97:/etc/nginx . //使用nginx容器长iD,使用容器名报错
docker stop bac97
docker rm bac97
mv nginx conf
mkdir nginx
mv conf nginx/
//每一行后面都有一个 \ 用于linux识别换行
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

图示:
Centos7 docker下安装elasticsearch、ik、nginx和kibana_第9张图片Centos7 docker下安装elasticsearch、ik、nginx和kibana_第10张图片 访问80端口

​ 出现404,因为nginx/html文件夹下没有文件,随便编写一个index.html,访问80可以显示出来,说明nginx配置完成(nginx寻找资源默认都是在html文件夹下找)
在这里插入图片描述
修改ik分词器远程词库地址:
Centos7 docker下安装elasticsearch、ik、nginx和kibana_第11张图片修改完成之后,重启es
在这里插入图片描述如果想增加什么分词,就在fenci.txt进行新增,重启es就能自动识别:
在这里插入图片描述测试不通过,之后改成使用es中配置分词词库,没有用到nginx(这种方式在es集群环境下并不适用)

Centos7 docker下安装elasticsearch、ik、nginx和kibana_第12张图片

Docker安装Kibana

可视化界面,可视化检索数据

测试数据方法:

  1. 直接用postman,但是略繁琐
  2. 用kibana,方便,但是体积略大

上一节已经安装kibana了,启动:

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.0.143:9200 -p 5601:5601 \
-d kibana:7.4.2

注意把ip换成自己的

访问192.168.0.143:5601

  • 因为我安装出问题了,所以使用的谷歌插件 elasticsearch-head,这个很轻便,kibana1.1G!

修改:

使用elasticsearch-head发送请求会出现406问题,这是因为缺少请求体导致发送数据不安全,需要修改两个地方:
F:\JavaDevelop\plug\elasticsearch-head\elasticsearch-head 下 vendor.js

  1. 第一处在6888行:把内容 ‘application/x-www-form-urlencoded’ 改成 ‘application/json;charset=UTF-8’
  2. 第二处在7574行:把内容 ‘application/x-www-form-urlencoded’ 改成 ‘application/json;charset=UTF-8’

修改完成后刷新界面,否则无法进行crud

kibana是大数据专用的软件哦~

设置开机自启动

docker update elasticsearch --restart=always
docker update kibana --restart=always

注:

  • 访问192.168.0.143:5601可能会出现没有准备好的标识,查看docker logs kibana,如果没有出现error,那么等待一会再访问就访问到了!
    Centos7 docker下安装elasticsearch、ik、nginx和kibana_第13张图片- 如果kibana写错ip,就废了,我之前那个虚拟机就是,咋弄都改不了,一直报错!!!解决办法欢迎各位同行指点迷津~

你可能感兴趣的:(elasticsearch,docker,nginx)