分享交流
合作共赢!

ELK基础使用方法总结【一】——ElasticSearch

一、ElasticSearch简介

1.描述

ElasticSearch简称ES,是一个基于Lucene实现的开源、分布式、Restful的全文本搜索引擎;此外,他还是一个分布式的实时文档存储,其中每个文档的每个field均是被索引的数据,其可被搜索;也是一个带实时分析工能的分布式搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据。

官方站点:https://www.elastic.co/

2.ES包含的级别组件

索引(index):文本容器,也可以说是具有类似属性文档的集合,类似于表。索引名必须使用小写字母;

类型(type):类型是索引内部的逻辑分区,其意义完全取决于用户需求,一个索引内部可定义一个或多个类型。一般来说,类型就是拥有相同域的文档的预定义;

文档(document):文档是Lucene索引和搜索的原子单位,它包含了一个或多个域,是域的容器,基于JSON格式表示;

映射(mapping):原始内容存储为文档之前需要实现进行分析,例如切词、过滤掉某些词等;映射用于定义此分析机制该如何实现,此外,ES还为映射提供了诸如将域中的内容排序等功能;

 3.ES集群组件:

Cluster:ES的集群标识为集群名称,默认为“elasticsearch”,节点就是依靠此名称来决定加入到哪个集群中,一个节点只能属于一个集群;

Node:运行了单个ES实例的主机即为节点,用于存储数据、参与集群索引及搜索操作,节点的标识靠节点名称;

Shard:将索引切割为物理存储组件,但每个shard都是一个独立且完整的索引,创建索引时,ES默认将其分割为5个shard,用户也可以按需求自定义,但创建完成后不可修改(包含primary shard和replica shard,Replica用于数据冗余及查询是的负载均衡);

 4.ES Cluster的工作过程:

启动时,通过多播(默认)或单播的方式在9300/tcp端口查找同意集群中的其他节点,并与之建立通信(接收请求端口9200/tcp)。

集群中的所有节点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各shards的分布方式。站在用户角度而言,每个节点都可以接受和相应用户的各类请求。

集群状态:green,red,yellow

 二、Elasticsearch安装部署

1.RPM包安装方法

1.下载elasticsearch RPM安装包

下载地址:https://www.elastic.co/downloads/elasticsearch

根据自己的需求下载相应的安装包,我这里下载的是elasticsearch-7.9.1-x86_64.rpm

安装

]# yum install elasticsearch-7.9.1-x86_64.rpm
 

2.YUM安装方法【推荐】

1.下载并安装公共签名密钥

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2.yum源创建repo文件

~]# cat > /etc/yum.repos.d/elastic.repo << EOF
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

3.yum安装

]# sudo yum install elasticsearch

三、Elasticsearch配置

1.配置文件

/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options

2.elasticsearch.yml配置项

参数 说明
cluster.name 集群名称,相同名称为一个集群
node.name 节点名称,集群模式下每个节点名称唯一
node.master 当前节点是否可以被选举为master节点,是:true、否:false
node.data 当前节点是否用于存储数据,是:true、否:false
path.data 索引数据存放的位置
path.logs 日志文件存放的位置
bootstrap.memory_lock 需求锁住物理内存,是:true、否:false
bootstrap.system_call_filter SecComp检测,是:true、否:false
network.host 监听地址,用于访问该es
network.publish_host 可设置成内网ip,用于集群内各机器间通信
http.port es对外提供的http端口,默认 9200
discovery.seed_hosts es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
cluster.initial_master_nodes es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
http.cors.enabled 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.allow-origin

“*” 表示支持所有域名

配置项参考如下配置:

# 集群名称,在各个节点中必须配置唯一
cluster.name: myes

# 节点名称
node.name: node01

# 当前节点是否可以被选举为master节点,是:true、否:false
node.master: true

# 当前节点是否用于存储数据,是:true、否:false
node.data: true

# 数据和日志存储目录,建议与es的安装目录区分,防止es删除后数据的丢失
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

# 需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false

# SecComp检测,是:true、否:false
bootstrap.system_call_filter: false

# es的服务器IP地址
network.host: 192.168.239.131

# 可选项
network.publish_host: 192.168.239.131

# 主机访问的端口号
http.port: 9200

# 集群通信端口 transport.port: 9300

# 生产必须为true,内存锁定检查,目的是内存地址直接映射,减少一次copy时间 bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏,考虑集群安全,生产设置成false bootstrap.system_call_filter: false

# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
# es7之后,不需要discover.zen.ping.unicast.hosts这个参数,用discovery.seed_hosts替换
discovery.seed_hosts: ["192.168.239.130","192.168.239.131","192.168.239.132"]

# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes:["192.168.239.130","192.168.239.131","192.168.239.132"]

# 是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true

# "*" 表示支持所有域名
http.cors.allow-origin: "*"

3.jvm.options配置

# 按需修改如下内存大小即可
-Xms4g
-Xmx4g

4.其他配置项参考(按需配置)

1、每个进程最大同时打开文件数太小

vim /etc/security/limits.conf
# 增加如下:
# elsearch为用户名
elsearch soft nofile 65536
elsearch hard nofile 65536
# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hn
ulimit -Sn

2、申请锁定内存失败

vim config/elasticsearch.yml

# 修改,不锁定内存
bootstrap.memory_lock: false

3、 最大虚拟内存太小

vim /etc/sysctl.conf
# 增加如下:
vm.max_map_count=262144
# 修改完之后,执行如下命令生效
sysctl -p

4、 最大线程数太小

vim /etc/security/limits.conf
# 增加如下:
# elsearch为用户名
elsearch soft nproc 4096
elsearch hard nproc 4096
# 保存之后,退出当前用户重新登录生效,可用如下命令查看是否修改成功
ulimit -Hu
ulimit -Su

5.启动

官方使用文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

1.分别在各个节点启动elasticsearch

]# systemctl daemon-reload
]# systemctl start elasticsearch

2.查看集群状态信息

]# curl -XGET 'http://192.168.239.131:9200/_cat/nodes?pretty'
192.168.239.130 6 96 33 1.45 1.71 1.04 dilmrt - master01
192.168.239.132 45 96 0 0.01 0.16 0.15 dilmrt - node02
192.168.239.131 47 96 0 0.02 0.23 0.22 dilmrt * node01

未完待续……

赞(3) 打赏
未经允许不得转载:琼杰笔记 » ELK基础使用方法总结【一】——ElasticSearch

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏