ElasticSearch-安装部署全过程

本文已收录于专栏 《中间件合集》


目录

概念说明

什么是ElasticSearch

是一个开源的分布式搜索和分析引擎,它建立在 Apache Lucene 搜索引擎库之上。它提供了一个分布式、多租户的全文搜索引擎,具有强大的实时搜索和分析能力。Elasticsearch 是用 Java 语言编写的,并且提供了 RESTful API,使其易于集成和使用。

ElasticSearch 官网:https://www.elastic.co/cn/elasticsearch/

什么是Kibana

Kibana 是一个用于数据可视化和分析的开源工具。它提供了一个直观的 Web 界面,可以通过图表、仪表盘和报表等方式展示 Elasticsearch 中的数据。Kibana 支持实时数据可视化,并提供了强大的查询和过滤功能。它还可以与 Elasticsearch 进行深度集成,通过搜索和聚合数据来生成交互式报表和可视化图表。

什么是RESTful API

RESTful API 是一种设计风格和架构原则,用于构建可扩展的、可维护的网络服务。REST 是 Representational State Transfer 的缩写,它强调在网络中以资源为中心进行通信。

RESTful API 的设计原则包括:

基于资源:将网络服务中的数据和功能抽象为资源,每个资源都有一个唯一的标识符(URI)。客户端通过 URI 访问和操作资源。

统一接口:RESTful API 使用统一的接口定义,包括使用 HTTP 方法(GET、POST、PUT、DELETE)对资源进行操作,使用 HTTP 状态码表示操作结果,使用 MIME 类型指定数据的表示形式(如 JSON、XML)。

无状态性:每个请求都是独立的,服务器不会保存客户端的状态信息。客户端可以在请求中包含所有必要的信息,服务器根据请求进行处理并返回响应。

可缓存性:RESTful API 支持缓存,客户端可以缓存服务器返回的响应,减少网络传输和服务器负载。

分层系统:RESTful API 的架构是分层的,每一层都有特定的功能和责任。客户端可以通过中间层(如代理服务器)与服务器进行通信,而不需要了解底层的实现细节。

安全性:RESTful API 使用标准的安全机制(如 HTTPS、OAuth)来保护数据和通信的安全性。

RESTful API 的设计目标是简单、可扩展和易于理解。它可以被不同的客户端(如 Web 应用、移动应用)使用,并且可以与不同的后端服务进行集成。RESTful API 已经成为构建 Web 服务和应用程序的常用标准。

提供服务

Nginx是一款高性能的开源Web服务器和反向代理服务器,它提供了以下几种服务:

  • 「 实时搜索 」:Elasticsearch 提供了高性能的实时搜索功能,可以快速地从大量数据中检索相关的结果。

  • 「 分布式架构」:Elasticsearch 使用分布式架构,可以在多个节点上存储和处理数据。这使得它具有高可用性、可伸缩性和容错性。

  • 「 全文搜索 」:Elasticsearch 使用倒排索引技术,可以对文本数据进行全文搜索。它支持复杂的查询和过滤,可以根据相关性对搜索结果进行排序。

  • 「数据分析」:Elasticsearch 提供了强大的数据聚合和分析功能,可以对大规模数据进行实时分析。它支持聚合、分组、统计和可视化等功能,帮助用户发现数据中的模式和趋势。

  • 「 分布式文档存储」:Elasticsearch 使用 JSON 文档存储数据,每个文档都有一个唯一的 ID。它支持索引和搜索各种类型的数据,包括结构化、半结构化和非结构化数据。

安装过程

安装ElasticSearch

1.下载ElasticSearch 安装包

可以从官网上直接下载,然后在放到es服务器上,也可以使用wget命令的形式直接下载(下载比较慢)

java 复制代码
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz

2.解压安装包

xml 复制代码
tar -xvf elasticsearch-7.6.2-linux-x86_64.tar.gz

3.进入解压之后的文件夹

xml 复制代码
 cd elasticsearch-7.6.2

4.创建一个data文件夹用来存储数据

xml 复制代码
mkdir data

5.进入config文件夹编辑elasticsearch.yml

xml 复制代码
vi elasticsearch.yml

将以下注解解开

network.host修改为0.0.0.0,让所有的服务器都可以进行访问

6.修改内存配置

xml 复制代码
vim ./config/jvm.options

7.修改系统配置,编辑文件sysctl.conf,增加一行vm.max_map_count=262144,保存后退出

xml 复制代码
sudo vim /etc/sysctl.conf
xml 复制代码
:wq

8.创建ES专用账号

ElasticSearch5.0之后不能使用root账号启动,所以需要创建ES用户并设置密码。

8.1创建用户

xml 复制代码
useradd user-es

8.2设置密码

xml 复制代码
sudo passwd 用户名

系统会提示你输入新密码两次。请注意,密码输入时不会显示在终端上,这是出于安全考虑。

8.3赋予权限

xml 复制代码
# 将es和kibana目录赋权限给新建用户,/usr/local为es所在上级目录
chown admin /usr/local -R

8.4设置用户的相关先限制

在linux中这些限制是分为软限制(soft limit)和硬限制(hard limit)的。他们的区别就是软限制可以在程序的进程中自行改变(突破限制),而硬限制则不行(除非程序进程有root权限)

-H :hard limit ,严格的设定,必定不能超过这个设定的数值,超过会报错

-S :soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告信息

xml 复制代码
vim /etc/security/limits.conf,在末尾加上:

admin soft nofile 65536 #表示该用户的进程可以打开的最大文件描述符数,软限制
admin hard nofile 65536 #表示该用户的进程可以打开的最大文件描述符数,硬限制
admin soft nproc 4096    #单个用户可用的最大进程数量 ,软限制
admin hard nproc 4096   #单个用户可用的最大进程数量,硬限制
 
vim /etc/security/limits.d/20-nproc.conf,增加:

admin    soft    nproc     4096

8.5执行sysctl -p 使配置生效

xml 复制代码
sudo sysctl -p 

9.启动ElasticSearch服务

在ES目录中执行以下命令:

xml 复制代码
前台执行   ./bin/elasticsearch
xml 复制代码
后台执行   nohup ./bin/elasticsearch > nohup.out 2>&1 &

10.访问ElasticSearch服务,查看是否启动成功

直接访问ip+端口号,咱们之前设置的端口号为9200

注:记得打开端口号,可参考博客:Linux如何打开指定端口号

安装Kibana

1.wget下载安装包

xml 复制代码
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz

2.解压安装包

xml 复制代码
tar -xvf kibana-7.6.2-linux-x86_64.tar.gz

3.进入到kibana目录

xml 复制代码
cd kibana-7.6.2-linux-x86_64

4.编辑配置文件

xml 复制代码
vim config/kibana.yml
xml 复制代码
# 添加以下内容:
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://es的ip地址或域名:9200"]

5.启动Kinbana

xml 复制代码
前台执行   ./bin/kinbana
xml 复制代码
后台执行   nohup ./bin/kinbana > nohup.out 2>&1 &

6.访问Kinbana服务,查看是否启动成功

直接访问ip+端口号,咱们之前设置的端口号为5601

常见问题

在启动的过程中经常会出现以下问题,基本上都是配置文件修改之后没有生效的原因

1.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决方案:执行sudo vim /etc/security/limits.conf查看是否加上了如图配置。加上之后在执行sysctl -p ,再启动ES,如果依然出现相同的错误,则说明配置没有生效,重启服务器使用reboot命令,再启动ES,问题应该就可以解决了。

2.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方案:解决方法:回到之间的步骤,配置ElasticSearch中的步骤五,执行sudo vim /etc/sysctl.conf查看是否加上了如图配置。加上之后在执行sysctl -p ,再启动ES,如果依然出现相同的错误,则说明配置没有生效,重启服务器使用reboot命令,再启动ES,问题应该就可以解决了。

总结提升

Elasticsearch 和 Kibana 的结合可以实现强大的搜索、分析和可视化功能。通过使用 Elasticsearch 的搜索和分析能力,可以轻松地对大量数据进行复杂的查询和聚合操作。而 Kibana 则提供了友好的界面,方便用户通过图表和仪表盘等方式直观地展示和分析数据。

🎯 此文章对你有用的话记得留言+点赞+收藏哦🎯

相关推荐
筒栗子3 分钟前
复习打卡大数据篇——Hadoop MapReduce
大数据·hadoop·mapreduce
金州饿霸7 分钟前
Hadoop集群(HDFS集群、YARN集群、MapReduce计算框架)
大数据·hadoop·hdfs
椰椰椰耶12 分钟前
【文档搜索引擎】搜索模块的完整实现
java·搜索引擎
lucky_syq37 分钟前
Spark和MapReduce之间的区别?
大数据·spark·mapreduce
Mitch31142 分钟前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
Mitch3111 小时前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
LonelyProgramme1 小时前
Flink定时器
大数据·flink
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python
NiNg_1_2341 小时前
Hadoop中MapReduce过程中Shuffle过程实现自定义排序
大数据·hadoop·mapreduce
B站计算机毕业设计超人1 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化