文章目录
- 1、防火墙设置,开启所需端口
- 2、创建目录,并更改目录权限
- 3 设置系统参数
- 4 启动
- 5 安装ik分词器
- 6 配置
- 7 安装elasticsearch-head(用于访问es,界面化工具)
- 8、 修改es中每次返回的数据数量参数(默认10000),解决分页不全问题,修改为100万,按需设置,海量数据那就不设置。
1、防火墙设置,开启所需端口
firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp
firewall-cmd --permanent --zone=public --add-port=9100/tcp
2、创建目录,并更改目录权限
mkdir -p /data/docker_data/elasticsearch7.13.3/logs /data/docker_data/elasticsearch7.13.3/data /data/docker_data/elasticsearch7.13.3/docker-compose
chmod 777 -R logs data
3 设置系统参数
[root@localhost ~]# vi /etc/security/limits.conf
在文件的末尾加上
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096
4 创建docker-compose目录
/data/docker_data/elasticsearch7.13.3/下创建docker-compose目录,创建
docker-compose.yml文件,es-node1在其他服务器上用es-node2、es-node3
需要注意的是discovery.zen.ping.unicast.hosts参数和discovery.seed_hosts参数不能同时配置,新旧版本问题
配置cluster.name(每个服务器上的都是一样的) 配置node.name(每个节点的服务器都是不一样的) 跨域的设置
node.master = true // 代表有可能被选举成master节点 node.data = true //
代表可以对数据的增删改查 禁止 swap,一旦允许内存与磁盘的交换,会引起致命的性能问题。可以通过在 elasticsearch.yml 中
bootstrap.memory_lock: true,以保持 JVM 锁定内存,保证 ES 的性能
-discovery.zen.minimum_master_nodes=2#本次没有配置这项,因为在最新版7.x中, minimum_master_node 这个参数已经被移除了,这一块内容完全由es自身去管理,这样就避免了脑裂的问题,选举也会非常快。
docker-compose.yml文件如下:
version: '3'
services:
es-node1:
image: elasticsearch:7.13.3
container_name: es-node1
restart: always
environment:
- cluster.name=elasticsearch-cluster
- node.name=es-node1
- network.publish_host=131.0.4.11
- node.master=true
- node.data=true
- bootstrap.memory_lock=true
- http.cors.enabled=true
- http.cors.allow-origin=*
- cluster.initial_master_nodes=131.0.4.11,131.0.4.12,131.0.4.13
- discovery.seed_hosts=131.0.4.11,131.0.4.12,131.0.4.13
- xpack.monitoring.collection.enabled=true
- xpack.monitoring.enabled=true
- "ES_JAVA_OPTS=-Xms16g -Xmx16g"
- network.host=0.0.0.0
- http.port=9200
- transport.tcp.port=9300
ulimits:
nproc: 65535
memlock:
soft: -1
hard: -1
volumes:
- /data/docker_data/elasticsearch7.13.3/data:/usr/share/elasticsearch/data
- /data/docker_data/elasticsearch7.13.3/logs:/usr/share/elasticsearch/logs
ports:
- 9200:9200
- 9300:9300
4 启动
docker-compose up -d
5 安装ik分词器
1)下载分词器压缩包(和es的版本要相同)
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.3/elasticsearch-analysis-ik-7.13.3.zip
2)将压缩包拷贝到容器中
docker cp ./elasticsearch-analysis-ik-7.13.3.zip es-node1:/usr/share/elasticsearch/plugins
3)进入容器
docker exec -it es-node1 bash
4)创建目录
mkdir /usr/share/elasticsearch/plugins/ik
5)将文件压缩包移动到ik中
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.13.3.zip /usr/share/elasticsearch/plugins/ik
6)进入目录
cd /usr/share/elasticsearch/plugins/ik
7)解压
unzip elasticsearch-analysis-ik-7.13.3.zip
8)删除压缩包
rm -rf elasticsearch-analysis-ik-7.13.3.zip
9)退出容器,重启es容器
exit;
docker restart es-node1
每一台都要装,装三次ik分词器
6 配置
1)进入elasticsearch容器
docker exec -it es-node1 bash
2)修改elasticsearch.yml文件
vi config/elasticsearch.yml
在最下面添加2行
http.cors.enabled: true
http.cors.allow-origin: "*"
3)退出,重启容器
exit;
docker restart es-node1
4)设置自启动
docker update es-node1 --restart=always
7 安装elasticsearch-head(用于访问es,界面化工具)
1)下载镜像
docker pull mobz/elasticsearch-head:5
2 )创建\启动容器
docker run -itd --name elasticsearch-head --restart=always -p 9100:9100 mobz/elasticsearch-head:5
3) 设置解决elasticsearch-head查询406问题
将elasticsearch-head容器内vendor.js拷贝出来
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js /data/docker_data/elasticsearch7.13.3
修改vendor.js
1)6886行 contentType: "application/x-www-form-urlencoded
改成
contentType: "application/json;charset=UTF-8"
2) 7574/7573行 var inspectData = s.contentType === "application/x-www-form-urlencoded"
改成
var inspectData = s.contentType === "application/json;charset=UTF-8"
将改完的vendor.js拷贝回镜像
docker cp /data/docker_data/elasticsearch7.13.3/vendor.js elasticsearch-head:/usr/src/app/_site
重启:
docker restart elasticsearch-head
浏览器打开测试: http://ip:9100,可以访问