环境准备:
由于es依赖于java执行。可以在机器上执行以下命令安装java8。
yum install java-1.8.0-openjdk* -y
下载镜像包:
docker pull elasticsearch:7.17.4
创建配置目录:
mkdir -p /data/es/config
创建数据目录:
mkdir -p /data/es/node1/data
mkdir -p /data/es/node2/data
mkdir -p /data/es/node3/data
数据目录赋权限:
chmod 777 /data/es/node1/data
chmod 777 /data/es/node2/data
chmod 777 /data/es/node3/data
建立配置文件es1.yml
cd /data/es/config
vim es1.yml
cluster.name: elasticsearch-cluster #集群名(三个节点一致)
cluster.initial_master_nodes: es-node1 # 默认的主节点
node.name: es-node1 #节点名(每台节点不同)
network.bind_host: 0.0.0.0
network.publish_host: 120.48.65.211 #对外地址
http.port: 9201 #对外端口(每台机器装一个ES则不用改)
transport.tcp.port: 9301 #ES内部通信端口(每台机器装一个ES则不用改)
discovery.zen.minimum_master_nodes: 2 #主节点数/2+1,防止脑裂
http.max_content_length: 2000mb
http.max_header_size: 1024k
http.max_initial_line_length: 1024k
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["120.48.65.211:9301","120.48.65.211:9302","120.48.65.211:9303"]
创建集群其他节点配置文件
cp -r es1.yml es2.yml
cp -r es1.yml es3.yml
启动ES noed1 节点
docker run -itd -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-p 9201:9201 \
-p 9301:9301 \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=4096m \
-v ./data/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data/es/node1/data:/usr/share/elasticsearch/data \
--restart=always --name ES01 elasticsearch:7.17.4
启动ES noed2 节点
14.docker run -itd -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-p 9202:9202 \
-p 9302:9302 \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=4096m \
-v ./data/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data/es/node2/data:/usr/share/elasticsearch/data \
--restart=always --name ES02 elasticsearch:7.17.4
启动ES node3节点
docker run -itd -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-p 9203:9203 \
-p 9303:9303 \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=4096m \
-v ./data/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v ./data/es/node3/data:/usr/share/elasticsearch/data \
--restart=always --name ES03 elasticsearch:7.17.4
查看日志
docker logs ES01
访问ES
http://120.48.65.211:9201
查看ES集群状态
http://120.48.65.211:9201/_cat/health?v
ES操作指令详解
/_cat/allocation #查看单节点的shard分配整体情况
/_cat/shards #查看各shard的详细情况
/_cat/shards/{index} #查看指定分片的详细情况
/_cat/master #查看master节点信息
/_cat/nodes #查看所有节点信息
/_cat/indices #查看集群中所有index的详细信息
/_cat/indices/{index} #查看集群中指定index的详细信息
/_cat/segments #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘
/_cat/segments/{index}#查看指定index的segment详细信息
/_cat/count #查看当前集群的doc数量
/_cat/count/{index} #查看指定索引的doc数量
/_cat/recovery #查看集群内每个shard的recovery过程.调整replica。
/_cat/recovery/{index}#查看指定索引shard的recovery过程
/_cat/health #查看集群当前状态:红、黄、绿
/_cat/pending_tasks #查看当前集群的pending task
/_cat/aliases #查看集群中所有alias信息,路由配置等
/_cat/aliases/{alias} #查看指定索引的alias信息
/_cat/thread_pool #查看集群各节点内部不同类型的threadpool的统计信息,
/_cat/plugins #查看集群各个节点上的plugin信息
/_cat/fielddata #查看当前集群各个节点的fielddata内存使用情况
/_cat/fielddata/{fields} #查看指定field的内存使用情况,里面传field属性对应的值
/_cat/nodeattrs #查看单节点的自定义属性
/_cat/repositories #输出集群中注册快照存储库
/_cat/templates #输出当前正在存在的模板信息