一、ElasticSearch简介
1.描述
ElasticSearch简称ES,是一个基于Lucene实现的开源、分布式、Restful的全文本搜索引擎;此外,他还是一个分布式的实时文档存储,其中每个文档的每个field均是被索引的数据,其可被搜索;也是一个带实时分析工能的分布式搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据。
官方站点:https://www.elastic.co/
2.ES包含的级别组件:
索引(index):文本容器,也可以说是具有类似属性文档的集合,类似于表。索引名必须使用小写字母;
类型(type):类型是索引内部的逻辑分区,其意义完全取决于用户需求,一个索引内部可定义一个或多个类型。一般来说,类型就是拥有相同域的文档的预定义;
文档(document):文档是Lucene索引和搜索的原子单位,它包含了一个或多个域,是域的容器,基于JSON格式表示;
映射(mapping):原始内容存储为文档之前需要实现进行分析,例如切词、过滤掉某些词等;映射用于定义此分析机制该如何实现,此外,ES还为映射提供了诸如将域中的内容排序等功能;
3.ES集群组件:
Cluster:ES的集群标识为集群名称,默认为“elasticsearch”,节点就是依靠此名称来决定加入到哪个集群中,一个节点只能属于一个集群;
Node:运行了单个ES实例的主机即为节点,用于存储数据、参与集群索引及搜索操作,节点的标识靠节点名称;
Shard:将索引切割为物理存储组件,但每个shard都是一个独立且完整的索引,创建索引时,ES默认将其分割为5个shard,用户也可以按需求自定义,但创建完成后不可修改(包含primary shard和replica shard,Replica用于数据冗余及查询是的负载均衡);
4.ES Cluster的工作过程:
启动时,通过多播(默认)或单播的方式在9300/tcp端口查找同意集群中的其他节点,并与之建立通信(接收请求端口9200/tcp)。
集群中的所有节点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各shards的分布方式。站在用户角度而言,每个节点都可以接受和相应用户的各类请求。
集群状态:green,red,yellow
二、Elasticsearch安装部署
1.RPM包安装方法
1.下载elasticsearch RPM安装包
下载地址:https://www.elastic.co/downloads/elasticsearch
根据自己的需求下载相应的安装包,我这里下载的是elasticsearch-7.9.1-x86_64.rpm
安装
]# yum install elasticsearch-7.9.1-x86_64.rpm
2.YUM安装方法【推荐】
1.下载并安装公共签名密钥
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2.yum源创建repo文件
~]# cat > /etc/yum.repos.d/elastic.repo << EOF
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
3.yum安装
]# sudo yum install elasticsearch
三、Elasticsearch配置
1.配置文件
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
2.elasticsearch.yml配置项
参数 | 说明 |
---|---|
cluster.name | 集群名称,相同名称为一个集群 |
node.name | 节点名称,集群模式下每个节点名称唯一 |
node.master | 当前节点是否可以被选举为master节点,是:true、否:false |
node.data | 当前节点是否用于存储数据,是:true、否:false |
path.data | 索引数据存放的位置 |
path.logs | 日志文件存放的位置 |
bootstrap.memory_lock | 需求锁住物理内存,是:true、否:false |
bootstrap.system_call_filter | SecComp检测,是:true、否:false |
network.host | 监听地址,用于访问该es |
network.publish_host | 可设置成内网ip,用于集群内各机器间通信 |
http.port | es对外提供的http端口,默认 9200 |
discovery.seed_hosts | es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点 |
cluster.initial_master_nodes | es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master |
http.cors.enabled | 是否支持跨域,是:true,在使用head插件时需要此配置 |
http.cors.allow-origin |
“*” 表示支持所有域名 |
配置项参考如下配置:
# 集群名称,在各个节点中必须配置唯一
cluster.name: myes
# 节点名称
node.name: node01
# 当前节点是否可以被选举为master节点,是:true、否:false
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 数据和日志存储目录,建议与es的安装目录区分,防止es删除后数据的丢失
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# 需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false
# SecComp检测,是:true、否:false
bootstrap.system_call_filter: false
# es的服务器IP地址
network.host: 192.168.239.131
# 可选项
network.publish_host: 192.168.239.131
# 主机访问的端口号
http.port: 9200
# 集群通信端口 transport.port: 9300
# 生产必须为true,内存锁定检查,目的是内存地址直接映射,减少一次copy时间 bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏,考虑集群安全,生产设置成false bootstrap.system_call_filter: false
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
# es7之后,不需要discover.zen.ping.unicast.hosts这个参数,用discovery.seed_hosts替换
discovery.seed_hosts: ["192.168.239.130","192.168.239.131","192.168.239.132"]
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes:["192.168.239.130","192.168.239.131","192.168.239.132"]
# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
# "*" 表示支持所有域名
http.cors.allow-origin: "*"
3.jvm.options配置
# 按需修改如下内存大小即可 -Xms4g -Xmx4g
4.其他配置项参考(按需配置)
1、每个进程最大同时打开文件数太小
vim /etc/security/limits.conf
# 增加如下:
# elsearch为用户名
elsearch soft nofile 65536
elsearch hard nofile 65536
# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hn
ulimit -Sn
2、申请锁定内存失败
vim config/elasticsearch.yml
# 修改,不锁定内存
bootstrap.memory_lock: false
3、 最大虚拟内存太小
vim /etc/sysctl.conf
# 增加如下:
vm.max_map_count=262144
# 修改完之后,执行如下命令生效
sysctl -p
4、 最大线程数太小
vim /etc/security/limits.conf
# 增加如下:
# elsearch为用户名
elsearch soft nproc 4096
elsearch hard nproc 4096
# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hu
ulimit -Su
5.启动
官方使用文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
1.分别在各个节点启动elasticsearch
]# systemctl daemon-reload
]# systemctl start elasticsearch
2.查看集群状态信息
]# curl -XGET 'http://192.168.239.131:9200/_cat/nodes?pretty'
192.168.239.130 6 96 33 1.45 1.71 1.04 dilmrt - master01
192.168.239.132 45 96 0 0.01 0.16 0.15 dilmrt - node02
192.168.239.131 47 96 0 0.02 0.23 0.22 dilmrt * node01
未完待续……
评论前必须登录!
注册