美文网首页
ElasticSearch基本介绍(一)

ElasticSearch基本介绍(一)

作者: OzanShareing | 来源:发表于2020-03-26 19:21 被阅读0次

引言


引自:Elasticsearch集群部署

一、ES中的基本概念


cluster

代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。

es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的。因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是相同的。

shards

代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

replicas

代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

recovery

代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

river

代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的rivercouchDB的,RabbitMQ的,Twitter的,Wikipedia的。

gateway

代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,HadoopHDFSamazons3云存储服务。

discovery.zen

代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

Transport

代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thriftservletmemcachedzeroMQ等的传输协议(通过插件方式集成)。

二、部署环境


采用三台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

ElasticSearch DownloadELasticSearch的中文官方站点。

下载您所需要的版本,我这里是elasticsearch-6.4.2-linux-x86_64.tar.gz

[root@hadoop1 ~]# tar -zxvf elasticsearch-6.4.2-linux-x86_64.tar.gz
# 因为执行./bin/elasticsearch -d需要非root用户,因此需要创建elastic用户
[root@hadoop1 ~]# adduser elastic
# 修改elastic用户拥有root权限
[root@hadoop1 ~]# vim /etc/sudoers
# 添加权限
elastic ALL=(ALL)       ALL
:wq!保存
#授权
[root@hadoop1 ~]# chmod 775 elasticsearch-6.4.2
[root@hadoop1 ~]# chown -R elastic:elastic elasticsearch-6.4.2
[root@hadoop1 ~]# mv elasticsearch-6.4.2 /home/elastic/
[root@hadoop1 ~]# su - elastic
[elastic@hadoop1 ~]$ cd 
[elastic@hadoop1 ~]$ ll
drwxrwxr-x 8 elastic elastic 4096 Sep 26  2018 elasticsearch-6.4.2

3. 配置目录

安装完毕后会生成很多文件,包括配置文件、日志文件等等,下面几个是最主要的配置文件路径:

# ES的配置文件
/etc/elasticsearch/elasticsearch.yml    
                    
# JVM相关的配置,内存大小等等   
/etc/elasticsearch/jvm.options              

# 日志系统定义                    
/etc/elasticsearch/log4j2.properties        

# 数据的默认存放位置                 
/var/lib/elasticsearch                                        
4. 创建用于存放数据与日志的目录

数据文件会随着系统的运行飞速增长,所以默认的日志文件数据文件的路径不能满足我们的需求,那么手动创建日志数据文件路径,可以使用NFSNetwork File System)、可以使用Raid(磁盘阵列)等等方便以后的管理与扩展。

mkdir {logs,data}
5. 集群配置

集群配置中最重要的两项是node.namenetwork.host,每个节点都必须不同。其中node.name是节点名称,主要是在Elasticsearch自己的日志加以区分每一个节点信息。

discovery.zen.ping.unicast.hosts是集群中的节点信息,可以使用IP地址、可以使用主机名(必须可以解析)。

vim /home/elastic/elasticsearch-6.4.2/config/elasticsearch.yml 

cluster.name: your-self-cluster                                 
node.name: es-node1                                         # 节点名称,仅仅是描述名称,用于在日志中区分

path.data: /home/ozan/elasticsearch-6.4.2/data              # 数据的默认存放路径
path.logs: /home/ozan/elasticsearch-6.4.2/logs              # 日志的默认存放路径

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

在最后加上这两句,要不然,外面浏览器就访问不了哈
http.cors.enabled: true
http.cors.allow-origin: "*"
6. JVM配置

由于ElasticsearchJava开发的,所以可以通过/etc/elasticsearch/jvm.options配置文件来设定JVM的相关设定。如果没有特殊需求按默认即可。

不过其中还是有两项最重要的-Xmx1g-Xms1g JVM的最大最小内存。如果太小会导致Elasticsearch刚刚启动就立刻停止,太大会拖慢系统本身。

vim /etc/elasticsearch/jvm.options
-Xms1g                         # JVM最大使用内存
-Xmx1g                         # JVM最小使用内存
7. 启动Elasticsearch

由于启动Elasticsearch会自动启动daemon-reload所以最后一项可以省略。

[elastic@hadoop1 bin]$ ./elasticsearch -d

查看elasticsearchlogs

8. 测试

Elasticsearch提供了http接口调用,所以直接使用curl命令就可以查看到一些集群相关的信息。

可以使用curl命令来获取集群的相关的信息

_cat:代表查看信息

nodes:为查看节点信息,默认会显示为一行,所以就用?preety让信息更友好的显示

?preety:让输出信息更友好的显示

相关文章

网友评论

      本文标题:ElasticSearch基本介绍(一)

      本文链接:https://www.haomeiwen.com/subject/btchuhtx.html