Elasticsearch的介绍和安装部署
一、ELasticsearch的原理
1.什么是ELasticsearch(简称ES)?
首先我们看ES官网的解释:ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
其次,ES也是使用java开发的,底层基于Lucene来实现索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
2.那Lucene又是什么?
Lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。其原理就是基于倒排索引实现的。
3.倒排索引和正排索引
倒排索引:通俗的理解就是使用文档中的词来作为索引,记录每个词在哪个文档的哪个位置。这就需要大量的构建索引,虽然前期构建索慢,但有了前期的铺垫,后期在查询的时候就非常快。
正排索引:与之相反,正排索引使用文档ID作为索引,记录每个词出现的次数与在该文档中的位置,优点是构建索引时较快,缺点是查询时较慢,需要每个索引都查询一遍。
二、ELasticsearch的安装和部署
在安装之前我们了解一下ELK的生态体系
ELK=ELasticsearch+Logstash+Kibana
Elasticsearch:后台分布式存储以及全文检索 .
Logstash: 是用来日志的搜集、过滤日志的工具,支持大量的数据获取方式。
Kibana:数据可视化展示。
ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。
1.安装包的准备
本次安装版本都是7.12.1(放在了/opt目录下)
2.安装部署ES集群
我们首先准备三台节点,分别为es1,es2,es3。
2.1修改每台机器的host和hostname
vim /etc/hosts
vim /etc/hostname
2.2安装jdk
rpm -ivh jdk-8u144-linux-x64.rpm
(会自动安装在/usr/java/下)
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME
2.3解压elasticsearch安装包,修改配置文件
cd /opt
# 解压安装包
tar -xzf elasticsearch-7.12.1-linux-x86_64.tar.gz -C ./
# 修改配置文件
vim /opt/elasticsearch-7.12.1/config/elasticsearch.yml
配置文件修改以下几个的地方:
集群其他几台节点同样的操作
2.4创建es用户、修改es目录所有者
useradd es
passwd es
chown -R es:es /opt/elasticsearch-7.12.1
2.5修改系统文件打开数
#查看可打开文件数量
ulimit -Hn
#用户最大可创建文件数太小,需要修改
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
2.6修改虚拟内存大小
# 查看虚拟内存大小
sysctl -a |grep vm.max_map_count
# 修改虚拟内存大小
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
# 从 /etc/sysctl.conf 加载系统参数
sysctl -p
2.7 启动es集群
# 切换至es用户
su - es
# 后台运行es服务
/opt/elasticsearch-7.12.1/bin/elasticsearch -d
没报错且能看到进程,就可以去访问web页面了
2.8访问es页面
es web ui:http://ip:9200
我们也可以用es的插件(elasticsearch-head)去查看我们的集群的整体情况
3.安装部署Kibana
3.1解压kibana安装包,修改配置文件
cd /opt
# 解压
tar -xzf kibana-7.12.1-linux-x86_64.tar.gz -C ./
# 修改配置文件
vim /opt/kibana-7.12.1-linux-x86_64/config/kibana.yml
配置文件添加如下内容:
server.port: 5601
server.host: "es1"
server.name: "es1"
# 如果有多个可用逗号分隔比如 ["http://worker-1:9200", "http://worker-2:9200"]
elasticsearch.hosts: ["http://es1:9200", "http://es2:9200", "http://es3:9200"]
kibana.index: ".kibana"
elasticsearch.username: "es"
elasticsearch.password: "es"
3.2修改kibana目录为es 所有
chown -R es:es /opt/kibana-7.12.1-linux-x86_64
3.3启动kibana
# 切换到es用户
su - es
# 启动kibana
nohup /opt/kibana-7.12.1-linux-x86_64/bin/kibana > /dev/null 2>&1 &
3.4访问es页面
kibana web ui:http://ip:5601
进去之后就长这个样子了兄弟mer
4.安装部署Logstash
4.1解压安装包
cd /opt
# 解压
tar -zxvf logstash-7.12.1-linux-x86_64.tar.gz -C ./
4.2创建软连接
ln -s /opt/logstash-7.12.1/bin/logstash /usr/local/bin/
4.3创建配置文件目录
mkdir -p /opt/logstash-7.12.1/config/config-logstash
#编写配置文件
vim /opt/logstash-7.12.1/config/config-logstash/01-stdin-to-stdout.conf
#填写以下内容
input {
stdin {}
}
output {
stdout{}
}
#检查配置文件语法
logstash -tf /opt/logstash-7.12.1/config/config-logstash/01-stdin-to-stdout.conf
4.4启动logstash实例
logstash -f /opt/logstash-7.12.1/config/config-logstash/01-stdin-to-stdout.conf
启动成功之后可以直接交互式采集了
最后:如需要安装包可关注留言获取