共计 4442 个字符,预计需要花费 12 分钟才能阅读完成。
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。Elastic 的底层是开源库。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
一、ES 中的基本概念
cluster
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es 的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看 es 集群,在逻辑上是个整体,你与任何一个节点的通信和与整个 es 集群通信是等价的。
shards
代表索引分片,es 可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas
代表索引副本,es 可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高 es 的查询效率,es 会自动对搜索请求进行负载均衡。
recovery
代表数据恢复或叫数据重新分布,es 在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river
代表 es 的一个数据源,也是其它存储方式(如:数据库)同步数据到 es 的一个方法。它是以插件方式存在的一个 es 服务,通过读取 river 中的数据并把它索引到 es 中,官方的 river 有 couchDB 的,RabbitMQ 的,Twitter 的,Wikipedia 的。
gateway
代表 es 索引快照的存储方式,es 默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway 对索引快照进行存储,当这个 es 集群关闭再重新启动时就会从 gateway 中读取索引备份数据。es 支持多种类型的 gateway,有本地文件系统(默认),分布式文件系统,Hadoop 的 HDFS 和 amazon 的 s3 云存储服务。
discovery.zen
代表 es 的自动发现节点机制,es 是一个基于 p2p 的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport
代表 es 内部节点或集群与客户端的交互方式,默认内部是使用 tcp 协议进行交互,同时它支持 http 协议(json 格式)、thrift、servlet、memcached、zeroMQ 等的传输协议(通过插件方式集成)。
二、部署环境
采用三台 CentOS7.3 部署 Elasticsearch 集群,部署 Elasticsearch 集群就不得不提索引分片,以下是索引分片的简单介绍。
系统 | 节点名 | IP |
---|---|---|
CentOS7.3 | els1 | 172.18.68.11 |
CentOS7.3 | els2 | 172.18.68.12 |
CentOS7.3 | els3 | 172.18.68.13 |
ES 集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。
三、部署 Elasticsearch 集群
1. 安装 JDK
Elasticsearch 是基于 Java 开发是一个 Java 程序,运行在 Jvm 中,所以第一步要安装 JDK
yum install -y java-1.8.0-openjdk-devel
2. 下载 elasticsearch
https://artifacts.elastic.co/downloads/elasticsearch/ 是 ELasticsearch 的官方站点,如果需要下载最新的版本,进入官网下载即可。可以下载到本地电脑然后再导入 CentOS 中,也可以直接在 CentOS 中下载。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.1.rpm
3. 配置目录
安装完毕后会生成很多文件,包括配置文件日志文件等等,下面几个是最主要的配置文件路径
/etc/elasticsearch/elasticsearch.yml # els 的配置文件
/etc/elasticsearch/jvm.options # JVM 相关的配置,内存大小等等
/etc/elasticsearch/log4j2.properties # 日志系统定义
/var/lib/elasticsearch # 数据的默认存放位置
4. 创建用于存放数据与日志的目录
数据文件会随着系统的运行飞速增长,所以默认的日志文件与数据文件的路径不能满足我们的需求,那么手动创建日志与数据文件路径,可以使用 NFS、可以使用 Raid 等等方便以后的管理与扩展
mkdir /els/{log,date}
chown -R elasticsearch.elasticsearch /els/*
5. 集群配置
集群配置中最重要的两项是 node.name
与network.host
,每个节点都必须不通。其中 node.name
是节点名称主要是在 Elasticsearch 自己的日志加以区分每一个节点信息。discovery.zen.ping.unicast.hosts
是集群中的节点信息,可以使用 IP 地址、可以使用主机名(必须可以解析)。
vim /etc/elasticsearch
cluster.name: aubin-cluster # 集群名称
node.name: els1 # 节点名称,仅仅是描述名称,用于在日志中区分
path.data: /var/lib/elasticsearch # 数据的默认存放路径
path.logs: /var/log/elasticsearch # 日志的默认存放路径
network.host: 192.168.0.1 # 当前节点的 IP 地址
http.port: 9200 # 对外提供服务的端口,9300 为集群服务的端口
discovery.zen.ping.unicast.hosts: ["172.18.68.11", "172.18.68.12","172.18.68.13"]
# 集群个节点 IP 地址,也可以使用 els、els.shuaiguoxia.com 等名称,需要各节点能够解析
discovery.zen.minimum_master_nodes: 2 # 为了避免脑裂,集群节点数最少为 半数 +1
6.JVM 配置
由于 Elasticsearch 是 Java 开发的,所以可以通过 /etc/elasticsearch/jvm.options
配置文件来设定 JVM 的相关设定。如果没有特殊需求按默认即可。
不过其中还是有两项最重要的 -Xmx1g
与-Xms1g
JVM 的最大最小内存。如果太小会导致 Elasticsearch 刚刚启动就立刻停止。太大会拖慢系统本身
vim /etc/elasticsearch/jvm.options
-Xms1g # JVM 最大、最小使用内存
-Xmx1g
7. 启动 Elasticsearch
由于启动 Elasticsearch 会自动启动 daemon-reload 所以最后一项可以省略。
systemctl enable elasticsearch.service
systemctl start elasticsearch
systemctl daemon-reload # 可以省略
8. 测试
Elasticsearch 直接听过了 http 接口,所以直接使用 curl 命令就可以查看到一些集群相关的信息。
可以使用 curl 命令来获取集群的相关的信息,
- _cat 代表查看信息
- nodes 为查看节点信息,默认会显示为一行,所以就用刀了?preety 让信息更有好的显示
- ?preety 让输出信息更友好的显示
curl -XGET 'http://172.18.68.11:9200/_cat/nodes?pretty'
172.18.68.12 18 68 0 0.07 0.06 0.05 mdi - els2
172.18.68.13 25 67 0 0.01 0.02 0.05 mdi * els3 # * 号表示为当前节点为主节点的意思
172.18.68.11 7 95 0 0.02 0.04 0.05 mdi - els1
如果你要想查看更多有关于集群信息、当前节点统计信息等等,可以使用一下命令来获取到所有可以查看的信息。
curl -XGET 'http://172.18.68.11:9200/_cat?pretty'
Elasticsearch 教程系列文章:
Linux 上安装部署 ElasticSearch 全程记录 http://www.linuxidc.com/Linux/2015-09/123241.htm
Linux 下 Elasticsearch 1.7.0 安装配置 http://www.linuxidc.com/Linux/2017-05/144215.htm
在 Ubuntu 16.04 中安装 Elasticsearch 5.4 分析引擎 http://www.linuxidc.com/Linux/2017-07/145588.htm
Elasticsearch1.7 升级到 2.3 实践总结 http://www.linuxidc.com/Linux/2016-11/137282.htm
Ubuntu 14.04 中 Elasticsearch 集群配置 http://www.linuxidc.com/Linux/2017-01/139460.htm
Elasticsearch-5.0.0 移植到 Ubuntu 16.04 http://www.linuxidc.com/Linux/2017-01/139505.htm
ElasticSearch 5.2.2 集群环境的搭建 http://www.linuxidc.com/Linux/2017-04/143136.htm
Linux 下安装搜索引擎 Elasticsearch http://www.linuxidc.com/Linux/2017-05/144105.htm
CentOS 上安装 ElasticSearch 详解 http://www.linuxidc.com/Linux/2017-05/143766.htm
Elasticsearch5.3 安装插件 head http://www.linuxidc.com/Linux/2017-09/147008.htm
ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149289.htm