Advertisement

大数据课程M2——ELK的ELASTICSEARCH概述

阅读量:

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州

▲ 本章节目的

⚪ 了解ELK的ELASTICSEARCH概括;

⚪ 掌握ELK的ELASTICSEARCH核心概念;

一、ELASTICSEARCH概括

1. ES安装和启动

注意:如果使用达内云主机,无需安装es,直接配置yml启动即可。

1. 安装

下载ES最新版本的安装包。

截止到本笔记时间,最新版本是7.10.2,ES的更新速度非常之快,但是我们应该合理运用ES的官方文档帮助我们实现学习和深入。

上传到服务器解压安装。

这里我们准备3个服务器分别上传,并且进行解压.使用的软件是开源免费的finalshell。

调用命令解压:

[root@10-42-17-191 software]# tar -zxvf /home/resource/elasticsearch-7.10.2-linux-x86_64.tar.gz -C /home/software/

配置es根目录下的jdk环境。

当前版本的 es7.10.2,要求最推荐使用 jdk11 以上的环境,根目录已经准备好了 jdk15。

2. 启动

安装完成之后我们可以在服务器启动这个ES软件。

添加用户用户组。

ES拒绝root用户直接启动软件,需要创建新用户,并且赋权启动。

[root@10-9-182-139 config]# groupadd tedu

[root@10-9-182-139 config]# useradd tedu -g tedu

赋权。

[root@10-42-17-191 config]# chown -R tedu:tedu /home/software/elasticsearch-7.10.2

启动ES。

[tedu@10-42-17-191 elasticsearch-7.10.2]$ ./bin/elasticsearch

测试es进程。

发送一个http请求,查看es。

3. 配置集群启动

上述启动的是单节点进程,如果按照默认配置,实际上是多个服务器各自启动一个ES进程,想要将他们添加到同一个集群,需要进行配置.配置文件就是ES目录中的config/elasticsearch.yml文件:

cluster.name: es-cluster

node.name: es01

path.data: /home/software/elasticsearch-7.10.2/data

path.logs: /home/software/elasticsearch-7.10.2/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.42.129", "192.168.42.131","192.168.42.130"]

cluster.initial_master_nodes: ["192.168.42.129"]

http.cors.enabled: true

http.cors.allow-origin: "*"

cluster.name

集群名称,同一个服务器集群的节点实例的集群名称要一致。

node.name

节点名称,也就是你启动的每个es的进程的名字。

path.data:

数据路径,指定当前es进程节点的存储数据的文件夹。

注意:如果路径不在启动es用户的权限范围之内,启动会报错。

path.logs:

es启动的日志文件夹。

注意:如果路径不在启动es用户的权限范围之内,启动会报错。

bootstrap.memory_lock:

锁定物理内容,会造成性能降低,将其关闭。

bootstrap.system_call_filter:

系统调用过滤器主要是防止任意代码攻击漏洞的.将其关闭。

network.host:

es进程绑定的物理ip可以ipv4 可以ipv6,默认是localhost不允许外界访问。

http.port:

es进程绑定占用的http协议访问端口,默认9200。

transport.tcp.port:

es进程绑定单用的tcp协议访问端口,默认9300。

discovery.seed_hosts:

配置主机hosts名单,主要可以使用ip:port的方式来配置.有几个节点,就配置几个节点。

cluster.initial_master_nodes:

集群第一次启动初始化时,想要指定的主机节点是谁,一旦配置,初始主机节点就定了,后续可以将这个配置删除。

http.cors.enabled:

是否支持跨域访问,如果支持,有一些代理软件是可以访问es的比如head插件。

http.cors.allow-origin:

当设置了支持跨域后,允许的跨域域名都有哪些,默认是*。

案例:

将多个es节点按照需求配置完成所有内容,如下所示。

ES01节点:

cluster.name: es-cluster

node.name: es01

path.data: /home/software/elasticsearch-7.10.2/data

path.logs: /home/software/elasticsearch-7.10.2/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.42.129", "192.168.42.131","192.168.42.130"]

cluster.initial_master_nodes: ["192.168.42.129"]

http.cors.enabled: true

http.cors.allow-origin: "*"

ES02节点:

cluster.name: es-cluster

node.name: es02

path.data: /home/software/elasticsearch-7.10.2/data

path.logs: /home/software/elasticsearch-7.10.2/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.42.129", "192.168.42.131","192.168.42.130"]

cluster.initial_master_nodes: ["192.168.42.129"]

http.cors.enabled: true

http.cors.allow-origin: "*"

ES03节点:

cluster.name: es-cluster

node.name: es03

path.data: /home/software/elasticsearch-7.10.2/data

path.logs: /home/software/elasticsearch-7.10.2/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.42.129", "192.168.42.131","192.168.42.130"]

cluster.initial_master_nodes: ["192.168.42.129"]

http.cors.enabled: true

http.cors.allow-origin: "*"

最后将3个节点挨个启动.一个分布式的集群就搭建好了。

启动错误问题:

无!

4. 测试访问

我们可以连接任意一个节点的9200端口进行集群的测试。

http://192.168.42.129:9200 到返回结果。

{

"name" : "es01",

"cluster_name" : "es-cluster",

"cluster_uuid" : "h9ffNy1YRleRuimyJ0AXQA",

"version" : {

"number" : "7.10.2",

"build_flavor" : "default",

"build_type" : "tar",

"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",

"build_date" : "2021-01-13T00:42:12.435326Z",

"build_snapshot" : false,

"lucene_version" : "8.7.0",

"minimum_wire_compatibility_version" : "6.8.0",

"minimum_index_compatibility_version" : "6.0.0-beta1"

},

"tagline" : "You Know, for Search"

}

2. ES的head插件

head插件是一个可以帮助用户代理访问es的,可以图形界面展示数据的插件.我们配置了es的跨域开启,所以为了方便观察,我们可以安装head插件。

1. node.js安装

head插件成功运行的语言环境就是node,需要提前安装,意义就类似于我们想运行tomcat就必须在jdk安装的前提下进行。

下载

wget https://nodejs.org/dist/v15.0.0/node-v15.0.0-linux-x64.tar.gz

在这里可以手动选择比较新的版本,node的环境也是对应操作系统的,所以这里选择Linux系统。

解压

[root@localhost resource]# tar -xf node-v15.0.0-linux-x64.tar.gz -C /home/presoft/

环境变量

1. 打开 /etc/profile。

[root@localhost resource]# vim /etc/profile

2. 编辑内容。

NODE_HOME=/home/presoft/node-15

PATH=PATH:./:/home/software/elasticsearch-7.10.2/jdk/bin:NODE_HOME/bin

export PATH NODE_HOME

3. 退出编辑内容,使得编辑生效。

[root@localhost resource]# source /etc/profile

验证node安装

2. head插件安装和启动

下载head插件

我们可以从git上下载head插件。

[root@localhost resource]# yum -y install git

[root@localhost resource]# git clone https://github.com/mobz/elasticsearch-head.git

npm安装

在head插件文件夹的根目录执行npm安装。

[root@localhost elasticsearch-head]#npm install -g grunt

[root@localhost elasticsearch-head]npm install

配置head文件(云主机必做)

在gruntFile.js中配置97(有可能版本不同有上下浮动)行内容,添加一个hostname。

启动head(云主机必做)

直接在 head 根目录运行命令启动,grunt server。

访问这个地址

二、ELASTICSEARCH核心概念

1. 索引(index)

类似于关系型数据中的库-database,一个es的集群中可以有多个索引,每个索引都是一批独立的存储数据,按照一定的数据结构保存,方便查询。

2. 类型(type)

类似于关系型数据库中的表格-table,一个索引中可以有多个类型,每个类型中的数据结构是一致的。

注意:6.x中使用类型,但是在7.x版本中,所有索引的类型只有一个叫做_doc,在8.x的版本将会彻底移除类型的概念.目的是提升索引的效率。

3. 映射(mapping)

类似于关系型数据库中定义的结构-schema,主要用来定义我们想要往es索引里存储的数据结构,到底是string还是数字,还是布尔等等。

4. 文档(document)

类似于关系型数据库中的行数据-rows,是es中存储数据的最小数据单元.每个文档都能根据数据的结构,有多个字段field存在.而field的类型,在存储数据时,是由mapping映射决定的。

5. 字段(field)

类似于关系型数据库中的列数据-columns,每个文档都由多个field组成。

6. 集群(cluster)

Es是天生分布式集群的结构,每个es进程都属于一个集群,即使只有一个Es进程在启动,它也是一个集群.不同集群由集群名称分开。

7. 节点(node)

每个ES进程都是一个节点,每个节点都有自己的名字。

8. 分片(shard)

单台机器存储数据量是有限的,es可以将一个index下的数据分为多个shard,存储在不同的机器上,横向扩展,存储更多的数据,而且可以让搜索,分析等操作分步到多个机器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

9. 分片复制(Replica)

每台机器都可能会不可用,此时shard上的数据就可能会丢失。因此可以为每个shard建立多个副本,保证在一个shard不可用时还可以使用副本,且保证数据不丢失,还能提升查询性能。

注意:主分片的个数是在建立索引时定下的,不能修改,默认为5个,副本分片,可以随时修改,默认是1个。因为要保证高可用,所以每个分片的的主分片和副本分片不能在一台机器上,所以保证最小高可用配置,需要两台服务器。

10. 接近实时(Near Reatime-NRT)

从写入数据到可以被搜索到会有一些延时,大概1秒左右,基于es执行搜索和分析可以达到秒级。

全部评论 (0)

还没有任何评论哟~