一、ES相关知识
ES基于RESTful web接口并且构建在Apache lucene之上的开源分布式搜索引擎。同时ES是一个分布式文档数据库,每个字段均可被索引、每个字段数据均可被搜索,能够横向扩展数以百计的服务器存储以及处理PB级的数据。
1. 可以在极短时间内存储、搜索和分析大量的数据
2. 通常作为具有复杂搜索场景下的核心发动机
ES高可用且高扩展。一方面同升级硬件完成系统扩展,称为垂直或向上扩展,另一方面,则增加更过的服务器来完成系统扩展,称为水平扩展或横向扩展。
ES架构组成:
Gateway,代表ES索引的持久化存储方式。ES默认将数据存入内存,当内存满后在持久化到Gateway中。当ES集群关闭或重启后,从Geteway里读取索引数据。
Distributed Lucene Directory,Lucene里的索引文件组成的目录,负责管理索引文件,包括数据的读入、写入以及索引的添加合并等。
River,代表数据源,以插件形式存在于ES。
Mapping,映射。
Search Module,搜索模块、支持搜索常用操作。
Index Module,索引模块、支持索引常用操作。
Discovery,负责集群的master节点发现。其发现机制:默认实现方式是单播和多播的形式,同时支持点对点的实现。
Scripting,脚本语言。
Transport,代表ES内部节点,跟集群的客户端交互。
RESTful Style API,通过RESTful方式实现的API。
3rd plugins,第三方插件。
Java(Netty),开发框架。
JMX,监控。
二、ES的搭建
搜索引擎,作用:更快的找到我们所要的,方式:生成索引,步骤:(1)把资料编号(2)把每篇资料的内容切词(3)处理成“词--》资料”的关系
Lucene:搜索引擎的类库,由Java开发
solr:开源项目,底层基于Lucene实现的搜索引擎产品
ElasticSearch:开源项目,提供了RESTful API(直接通过HTTP协议收发请求和响应,接口清晰简单)的服务
1. Linux单节点配置ES(安装ES版本6.4.1)
(1)添加用户
groupadd es
useradd es -g es -p password(指定密码)
chown -R es:es elasticsearch-6.4.1(赋予该目录下所有文件可操作权限)
(2)切换用户,并修改配置问健
su es
vi elasticsearch.yml 修改配置文件参数值 network.host:Linux的ip
(3)启动ES
前端启动:cd elasticsearch-6.4.1
./bin/elasticsearch
后端启动:cd elasticsearch-6.4.1
./bin/elasticsearch -d
本地测试:curl -X 127.0.0.1:9200
注意:启动过程中可能会显示报错
解决办法:
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决办法:
编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
[3]: max number of threads [2048] for user [tongtech] is too low, increase to at least [4096]
错误原因:启动检查未通过
elasticsearch用户的最大线程数太低
解决办法:
vim /etc/security/limits.conf
* soft nproc 4096
* hard nproc 4096
2. ES的集群部署
1)时钟同步
# 设置本地时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 集群时间日期同步NTP
yum install ntp
ntpdate pool.ntp.org
2)修改hosts文件
vim /etc/hosts
192.168.10.129 ES_01 192.168.10.130 ES_02 192.168.10.131 ES_033)关闭防火墙
4)修改elasticsearch.yml配置文件,如下:
cluster.name: es-group #集群名称,可以自行修改 node.name: node-1 #节点名称,自行修改 network.host: 172.27.1.1 #主机地址,这里写本机IP # 是否参与master选举和是否存储数据;这里根据你们具体部署的机子自行调整,下面默认为master节点 node.master: true # 节点类型,若三台一般部署为 master[true] client[true] data[false] node.data: true # 节点类型,若三台一般部署为 master[true] client[false] data[true] # master选举最少的节点数,这个一定要设置为N/2+1,其中N是:具有master资格的节点的数量,而不是整个集群节点个数 discovery.zen.minimum_master_nodes: 2 # discovery ping的超时时间,拥塞网络,网络状态不佳的情况下设置高一点 # discovery.zen.ping.timeout: 3s # [单播] 注意,分布式系统整个集群节点个数N要为奇数个!! discovery.zen.ping.unicast.hosts: ["172.27.1.1:9300", "172.27.1.2:9300", "172.27.1.3:9300"]5)启动ES集群
3. 安装Kibana插件
1)修改kibana.yml配置文件,如下:
server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://192.168.10.129:9200"2)启动Kibana
bin/kibana,浏览器访问http://IP:5601