在这一节,我们学习如何在 linux 环境安装 ElasticSearch(在平常工作中,ElasticSearch 一般都是安装在 linux 上,所以我们这里只讲如何在 linux 上安装 ES,windows 安装很简单,这里就不讲了),以及如何在 Windows 环境安装 elasticsearch-heead 插件和 Kibana。文章中包含我在安装过程中踩过的一些坑,都有做标注,帮助大家搭建属于自己的 ElastiSearch 开发环境。
一、Linux 环境安装 ElasticSearch
1、安装 Java 环境
在安装 ElasticSearch 之前,我们首先要安装对应版本的 Java 运行环境,因为 ElasticSearch 是使用 Java 语言开发的,依赖于 Java 的运行环境,所以在使用之前我们要安装对应版本的 JDK 以及配置 JDK 的环境变量。
JDK 版本选择,最好是 java8、java11或者java14!
但是从 ElasticSearch 7.0 版本开始,ElasticSearch 的安装目录已经包含了 JDK 的运行环境,也就是说我们不需要额外再安装一次 JDK 了。
我们这里安装的 ElasticSearch 版本是 7.8.0,所以不需要安装 Java 环境。
2、安装 ElasticSearch
(1)下载 ElasticSearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz,将软件下载到 opt/module/software 目录下。
# 创建 /opt/module/software
cd /opt
mkdir module
cd module
mkdir software
# 进入 /opt/module/software,并执行 wget 下载命令
cd /opt/module/software
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz


(2)安装 ElasticSearch
(a)解压
# 解压缩,解压缩到 /cpt/module 这个目录下
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
# 改名,elasticsearch-7.8.0 这个文件名太长了,将其修改为 es
mv elasticsearch-7.8.0 es


(b)创建用户
因为安全问题,ElasticSearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户。
# 创建 es 用户
useradd es
# 为 es 用户设置密码,在这里,我将密码也指定为 es
passwd es
# 如果创建错了,可以删除然后再创建,使用 userdel -r 删除已经创建好的用户
userdel -r es
# 将 /opt/module/es 这个文件夹的所有者修改为 es 用户,es:es,前者表示用户名,后者表示用户密码
chown -R es:es /opt/module/es

(c)修改 ES 配置文件
修改 opt/module/es/config/elasticsearch.yml 文件,加入如下配置:
# 集群名称
cluster.name: elasticsearch
# 节点名称
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
# 当前机器 node-1 作为主节点
cluster.initial_master_nodes: ["node-1"]


(d)修改系统配置
因为 ES 中生成的数据量比较多,文件的数量比较多,为了更好地控制这些文件,需要改变一些系统的配置。
1、修改 etc/security/limits.conf,在文件末尾增加如下内容:
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536


2、修改 etc/security/limits.d/20-nproc.conf,在文件末尾增加如下内容:
es soft nofile 65536
es hard nofile 65536


3、修改 etc/sysctl.conf,在文件中增加如下内容:
# 一个进程可以拥有的 VMA (虚拟内存区域)的数量,默认值是 65536
vm.max_map_count = 655360


重新加载 etc/sysctl.conf
sysctl -p

如果没有执行重新加载这一步,那么 vm.max_map_count 修改失败,还是默认值 65536,进而会导致后续的 ES 启动失败,启动报错信息见图15。(踩坑)

(3)启动 ElasticSearch
cd /opt/module/es
bin/elasticsearch
启动报错,见图16,原因是 ES 不能在 root 用户下启动,所以我们在启动前,先切换到 es 用户下。(踩坑)

cd /opt/module/es
su es
bin/elasticsearch
此时启动还是会报错,见图17,原因是使用 es 用户操作 opt/module/es 这个目录权限不够。(踩坑)

解决方案就是将 chown -R es:es opt/module/es 这句话再执行一遍(注意:这句话需要在 root 用户下执行),将 /opt/module/es 这个文件夹的用户修改为 es 用户,虽然上面已经修改了一次,为了解决问题,再修改一次。
# 切换回 root 用户,执行 chown -R es:es /opt/module/es 这句话。
# 使用 exit 命令退出当前的 es 用户,回到 root 用户,或者用 su root 命令也可以切换回 root 用户。
exit
chown -R es:es /opt/module/es
# 切换回 es 用户,启动 es
cd /opt/module/es
su es
bin/elasticsearch

此时启动还是报错,见图19,原因是 ElasticSearch 最大线程数目太低。(踩坑)

解决方案如下,修改 /etc/security/limits.conf,将 ES 最大线程数设置多一点,见图20。
# ES 最大线程数设置为 4096
es soft nproc 4096
es hard nproc 4096

启动日志见图21、22、23,图23中出现 started,说明 ES 启动成功。



也可以这样验证 ES 是否启动成功?打开另一个客户端,访问 curl http://localhost:9200,如果能够得到当前 ES 节点的信息,就说明 ES 启动成功了,见图24。或者,使用你本地的 windows 环境的浏览器,访问 http://192.168.56.10:9200,如果能够得到当前 ES 节点的信息,就说明 ES 启动成功了,见图25。


二、安装可视化界面 elasticsearch-head 插件
1、下载并安装 node.js
elasticsearch-head 插件依赖 node,所以我们需要下载并安装 node.js。
(1)下载 node.js
node.js 官方网站下载:https://nodejs.org/en/download/。默认下载最新版本的 node.js。本机之前安装过 10.16.3 版本的 node.js,但是运行 npn install 报错,去网上搜了一些博客,发现是 node.js 版本太高了,所以我这里重新安装 9.0.0 版本的node.js。
下载 9.0.0 版本的node.js,过程见图26、27、28,下载完成,安装包见图29。




(2)安装 node.js
双击打开安装,下一步下一步即可(笔者安装路径为“C:\Program Files\nodejs\”):
安装完成,测试安装是否成功,运行 cmd,分别输入 node -v 和 npm -v 分别查看 node 和 npm 的版本号,如果能够查看到版本号,说明 node.js 已经安装成功,见图30。

2、下载 head 插件
下载地址:https://github.com/mobz/elasticsearch-head,下载步骤见图31。

3、安装 head 插件
(1)解压
将下载下来的 elasticsearch-head-master.zip 解压缩,右键“解压到当前文件夹”,见图32,此时会自动生成一个 elasticsearch-head-master 文件夹,里面就是解压后的文件,见图33、34。



(2)使用 cmd 进入 elasticsearch-head 的文件夹,D:\software\elasticsearch-head-master。

(3)执行 npm install
执行完 npm install,此时 elasticsearch-head-master 文件夹下出现一个 node_modules 文件夹,说明 npm install 执行成功。

(4)执行 npm run start
执行 npm run start 启动 head 插件,当出现图 37 所示的信息,说明 head 插件启动成功,访问启动日志中的 http://localhost:9100 这个链接,即可进入 head 可视化界面,见图38。


当我们这次关闭 head 插件,之后还要使用 head 插件,直接执行(4)启动即可。
3、使用安装的 head 插件查看我们之前安装的 ES
我们在 head 插件中填写了刚刚安装的 ES 的地址,点击连接,发现页面没有反应,F12,查看前端报错,发现是典型的跨域问题导致 ES 连接不上。

那我们来解决这个跨域问题,步骤如下:
首先停止正在运行的 ES,Ctrl+C,见图40,或者直接关闭启动 ES 的cmd界面。

然后修改 ES 配置文件 /opt/module/es/config/elasticsearch.yml,加入如下配置:
# 开启跨域支持
http.cors.enabled: true
# 允许所有人可以访问
http.cors.allow-origin: "*"


修改完 ES 配置之后,重启 ES。

ES 启动成功,此时我们用 head 插件连接 ES,连接成功,在 head 界面中可以看到当前 ES 集群状态、以及集群中有哪些节点,见图43,图中的 node-1 就是刚刚安装的 ES 节点。

三、安装 Kibana
Kibana 是一个针对 ElasticSearch 的开源分析及可视化平台,你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
Elasticsearch、Logstash和Kibana这三个技术就是我们常说的 ELK 技术栈,它是一种很典型的 MVC 思想,模型持久层,视图层和控制层。Logstash 担任控制层的角色,负责搜集和过滤数据。Elasticsearch 担任数据持久层的角色,负责储存数据。Kibana 担任视图层角色,拥有各种维度的查询和分析,并使用图形化的界面展示存放在 Elasticsearch 中的数据。
1、下载 Kibana 安装包
Kibana 官网:https://www.elastic.co/cn/kibana,见图44,右侧就是 Kibana 的样子,我们发现它比 head 插件展示的内容更丰富一些。
点击左下角的“下载 Kibana”进入下载页面,注意,Kibana版本和Elasticsearch版本同步更新,所以我们最好使用一致的版本,而我们 Elasticsearch 使用的版本是7.8.0,所以我们 Kibana 也需要下载7.8.0。在下载页面点击 past releases 连接,进入历史版本下载界面,选择 7.8.0 版本,我们下载 windows 环境的压缩包,包的全名为:kibana-7.8.0-windows-x86_64.zip。




2、解压
将 kibana-7.8.0-windows-x86_64.zip 复制到 D:\software,右键“解压到当前文件夹”,此时就会自动生一个 kibana-7.8.0-windows-x86_64 文件夹,里面就是解压后的文件。

3、启动 Kibana
下载解压之后,以后我们每次想要使用 Kibana,只需要进入解压后的文件夹,进入 bin 目录,鼠标左键双击 kibana.bat 就可以启动 kibana 了。

启动出现问题,kibana 启动的窗口只打印了几行日志,就闪退了,见图50。(踩坑)

怀疑可能是权限不够,不再使用鼠标双击 kibana.bat 的方式启动 kiabana,改为使用管理员身份运行 kibana.bat,见图51,发现闪退的问题解决了。

此时启动,还是有问题,报错信息见图52,这个报错原因显而易见,我们是在 windows 环境安装的 Kibana ,它启动之后默认连接本地 windows 环境的 ES,即图中的 http://localhost:9200,但是我本地并没有安装ES,因为我想用 Kibana 操作之前在 linux 环境安装的 ES,所以报错了。(踩坑)

解决方案就是修改 Kibana 的配置文件,让其连接之前我在 linux 环境安装的 ES,并且启动 linux 环境的 ES,然后再启动 Kibana。
打开 Kibana 解压后的文件,进入 config 目录,修改配置文件 kibana.yml,加入如下配置:
# elasticsearch.hosts 默认为连接到本机的elasticsearch,并且端口为9200,也就是为localhost:9200,如果我们 Elasticsearch 不是与 Kibana 安装在同一台主机上,就需要修改这个配置了,我们将 elasticsearch.hosts 修改成之前在 linux 上安装的 ES 的地址
elasticsearch.hosts: ["http://192.168.56.10:9200"]
此时启动 Kibana,去启动日志见图53,出现 Ready 字样,以及最后一行 http server running at http://localhost:5601,说明 Kibana 启动成功。

访问 http://localhost:5601,进入 Kibana 页面,见图54。

4、访问测试
启动完 Kibana,如何使用它操作 ES 呢?
首先访问 http://localhost:5601,进入 Kibana 页面,点击“Try our sample data”进入新的页面。

进入新的页面后,点击左上角的工具栏按钮(三个横线),在工具栏中选择“Dev Tools”。

进入 Dev Tools,见图57,此时就可以在这个界面中对 ES 进行增删改查操作啦,左侧页面是编写操作语句,右侧界面展示操作结果。





