1.介绍
ElasticSearch是一个分布式,高性能、高可用、可伸缩、RESTful 风格的搜索和数据分析引擎。通常作为Elastic Stack的核心来使用,Elastic Stack大致是如下这样组成的:
ES是一个近实时(NRT)的搜索引擎,一般从添加数据到能被搜索到只有很少的延迟(大约是1s),而查询数据是实时的。一般我们可以把ES配合logstash,kibana来做日志分析系统,或者是搜索方面的系统功能,比如在网上商城系统里实现搜索商品的功能也会用到ES。
- Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。
Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:
一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
- 基础模块
cluster:管理集群状态,维护集群层面的配置信息。
alloction:封装了分片分配相关的功能和策略。
discovery:发现集群中的节点,以及选举主节点。
gateway:对收到master广播下来的集群状态数据的持久化存储。
indices:管理全局级的索引设置。
http:允许通过JSON over HTTP的方式访问ES的API。
transport:用于集群内节点之间的内部通信。
engine:封装了对Lucene的操作及translog的调用。
- elasticsearch应用场景
信息检索
日志分析
业务数据分析
数据库加速
运维指标监控
2.ES分布式安装和配置
官方网站 https://www.elastic.co/cn/
- 软件下载:
https://elasticsearch.cn/download/
安装软件
# rpm -ivh jdk-8u171-linux-x64.rpm
# rpm -ivh elasticsearch-7.6.1.rpm //7.6版本自带jdk(虚拟机内存需要在2048及以上)
设置服务自启:
# systemctl daemon-reload
# systemctl enable elasticsearch
- 修改配置文件:
# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es #集群名称
node.name: server1 #主机名需要解析
path.data: /var/lib/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #锁定内存分配
network.host: 0.0.0.0 #主机ip(0.0.0.0也可以)
http.port: 9200 #http服务端口
cluster.initial_master_nodes: ["server1","server2","server3"]
discovery.seed_hosts: ["server1", "server2","server3"] ##节点
- 修改系统限制
# vim /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch - nofile 65536
elasticsearch - nproc 4096
# vim jvm.options
-Xms1g
-Xmx1g
Xmx设置不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件系统缓存。但不要超过32G。
- 修改systemd启动文件
# vim /usr/lib/systemd/system/elasticsearch.service
[Service] #在service语句块下添加
LimitMEMLOCK=infinity
# systemctl daemon-reload
# systemctl start elasticsearch
修改配置文件,并启动服务
[root@server1 ~]# rpm -ivh elasticsearch-7.6.1-x86_64.rpm
[root@server1 elasticsearch]# vim elasticsearch.yml ##修改配置文件
[root@server1 elasticsearch]# systemctl start elasticsearch.service ##启动失败
Job for elasticsearch.service failed because the control process exited with error code. See "systemctl status elasticsearch.service" and "journalctl -xe" for details.