安装es相对来说比较简单,但是安装后启动可能报错,所以需要注意以下几点
- es不能用root用户启动
- 在/etc/sysctl.conf添加
vm.max_map_count = 262144 - jdk 8及以上
安装
下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz
解压安装包
tar -zxvf elasticsearch-6.5.0.tar.gz
安装中文分词器
可以去github下载release版本 解压在 plugins 目录下 或执行下面这条命令
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.0/elasticsearch-analysis-ik-6.5.0.zip
su 切换用户 之后运行ES
bin/elasticsearch &
至此单机版的就搭建好了
分布式ES 搭建
在一台机器上搭建 一主两从
将下载的ES 解压三份
elasticsearch-6.5.0-master
elasticsearch-6.5.0-slave1
elasticsearch-6.5.0-slave2
修改主节点的配置,elasticsearch-6.5.0-master/config下的elasticsearch.yml
cluster.name: elastic-cluster #集群的名称
node.name: master #节点的id ,在集群中唯一
node.master: true #是否是主节点
network.host: 127.0.0.1 #可以访问的ip地址 0.0.0.0(所有ip都可以访问)
配置slave节点 (两个从节点,只有端口号不一样)
cluster.name: elastic-cluster #集群名称三个节点保持一致
node.name: slave-1 #从节点 ID,保证唯一
network.host: 127.0.0.1 #对外公开的 IP 地址,如果自动识别配置为 0.0.0.0
http.port: 8200 #默认端口为 9200,因为我的环境是在同一台机器,因此,指定服务端口号
discovery.zen.ping.unicast.hosts: ["127.0.0.1"] #集群的 IP 组,配置主节点 IP
用docker搭建ES 集群
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d -p 9200:9200 -p 9300:9300 -v /root/elasticsearch/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name ES01 elasticsearch:latest
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d -p 9201:9201 -p 9301:9301 -v /root/elasticsearch/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name ES02 elasticsearch:latest
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d -p 9200:9200 -p 9300:9300 -v /root/elasticsearch/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name ES03 elasticsearch:latest
ES学习笔记
ES概念
- 索引(代表一类document的集合,类似于关系型数据库中的表)
- 文档(es中数据是按照json格式存储的,每条数据就是一个文档,相当于关系型数据库中的一条记录)
- type(6.0+已经废弃)
节点角色
master节点维护节点的状态Data节点可以保存数据的节点coordinating将请求分发到合适的节点,将最终的结果汇总到一起- Hot& warm 冷热节点
分片
-
主分片主分片的分片需要提前进行设定,提前做好容量规划,分片数过小影响扩展,分片数过大影响统计、打分 -
副本主分片的备份
集群健康状态
- Green 主分片与副本都正常分配
- Yellow 主分片全部正常分配,有副本分片未能正常分配
- Red 有主分片未能分配