Skip to content

ElasticSearch安装流程

Es相关中文文档

elasticsearch以下简称es

Elasticsearch中文文档

Docker安装ElasticSearch

  • 1、下载镜像文件
bash
docker pull elasticsearch:7.4.2 #存储和检索数据

docker pull kibana:7.4.2 #可视化检索数据
  • 2、创建ElasticSearch容器

创建容器前我们先挂载es的配置文件以及数据目录,挂载后我们只需要修改宿主主机中的配置文件或者数据就可以同步修改容器中的es,同时我们修改es的配置文件,添加http.host: 0.0.0.0代表了我们的es可以被远程的任何主机访问。

bash
mkdir -p /mydata/elasticsearch/config 
mkdir -p /mydata/elasticsearch/data

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml # 代表es可以被远程的任何机器访问

chmod -R 777 /mydata/elasticsearch/ #保证权限

接下来是创建es容器的脚本,同样像之前一样统一放在/usr/local/docker目录下,方便以后管理es容器。

/usr/local/docker/elasticsearch/start.sh

bash
#!/bin/bash

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

/usr/local/docker/elasticsearch/remove.sh

bash
#!/bin/bash

CONTAINER_NAME="elasticsearch"

CONTAINER_ID=$(docker ps -aqf "name=^$CONTAINER_NAME\$")   # 获取指定容器的ID
if [ ! -z "$CONTAINER_ID" ]; then
    docker stop $CONTAINER_ID && docker rm $CONTAINER_ID   # 先停止再移除容器
fi

命令解释:

-p表示暴露端口:

9200端口用于HttpRESTful API请求端口,即外部通信时用的端口

9300端口用于es在分布式集群状态下节点间的通信端口

-e表示指定参数:

discovery.type=single-node表示指定es以单节点方式运行

ES_JAVA_OPTS="-Xms64m -Xmx512m"非常重要,如果不指定,es已启动会将内存全部占用,我们的服务器直接卡死,这里设置初始64m,最大512m,在我们的学习以及测试期间已经够用,在平时公司项目中,一般都是32G的,我们就可以给es尽可能可能多的内存

-v表示挂载目录:

-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml,例如这里,以后我们修改宿主机的elasticsearch.yml配置文件就相当于修改容器中的elasticsearch,yml,避免进入容器中去操作。

-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins,后面我们会给es装一些插件,挂载目录后我们就不需要进入容器中装插件了,直接在宿主机安装插件即可。

-d表示指定镜像版本:

-d elasticsearch:7.4.2,指定7.4.2镜像版本

然后执行sh start.sh创建容器,可以看到容器成功创建

由于我使用的是腾讯云服务器,需要登录腾讯云开一下云服务器的端口,以及本机的防火墙端口

bash
firewall-cmd --list-ports #查看防火墙开放的所有端口

firewall-cmd --zone=public --add-port=9200/tcp --permanent

firewall-cmd --zone=public --add-port=9300/tcp --permanent

firewall-cmd --reload #重启一下防火墙,不然不会生效

这时候我们访问主机的9200端口就可以获取到es的信息,这个信息代表了我们当前节点的信息,能访问到如下信息说明我们的es已经安装成功。

安装Kibana可视化工具

WARNING

注意ELASTICSEARCH_HOSTS后的地址是我们宿主机的ip地址。

/usr/local/docker/kibana/start.sh

bash
#!/bin/bash

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

腾讯云服务器防火墙和本机防火墙端口记得开放5601端口

bash
firewall-cmd --zone=public --add-port=5601/tcp --permanent

firewall-cmd --reload

执行sh start.sh

可以在ip:5601端口访问到kibana的服务,当出现如下界面时说明我们的kibana已经安装成功。

上次更新于: