ElasticSearch - 安装
# 官网教程
- 官方网站(opens new window) (opens new window)
- 官方2.x中文教程中安装教程(opens new window) (opens new window)
- 官方ElasticSearch下载地址(opens new window) (opens new window)
- 官方Kibana下载地址 (opens new window)
# 安装ElasticSearch
# Windows版本
ElasticSearch安装
前往官网下载 Windows 版本,https://www.elastic.co/cn/downloads/elasticsearch (opens new window)
下载的是压缩包,选择好目录,进行解压,然后进入解压好的目录,其目录结构为:
根目录
|—— bin:可执行脚本目录
|—— config:配置目录
|—— log4j2.properties:日志配置文件
|—— jvm.options:Java 虚拟机的配置
|—— elasticsearch.yml:es 的配置文件
|—— data:索引数据目录
|—— lib:相关类库 Jar 包目录
|—— logs:日志目录
|—— modules:功能模块目录
|—— plugins:插件目录
2
3
4
5
6
7
8
9
10
11
进入 ElasticSearch 的 bin 目录下,会看到很多文件,启动的文件是 elasticsearch.bat
笔记
9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http 协议 RESTful 端口。
打开浏览器,访问:http://localhost:9200 (opens new window)
# 问题解决
Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上,默认安装包带有 jdk 环境,如果系统配置 JAVA_HOME,那么使用系统默认的 JDK,如果没有配置使用自带的 JDK,一般建议使用系统配置的 JDK。
双击启动窗口闪退,通过路径访问追踪错误,如果是「空间不足」,请修改 config/jvm.options 配置文件。
# 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
# Xms represents the initial size of total heap space
# 设置 JVM 最大可用内存为 1G
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
2
3
4
5
6
# Linux版本
请先确保 Linux 里已经安装了 jdk 1.8 以上版本
前往官网下载 Linux 版本,https://www.elastic.co/cn/downloads/elasticsearch (opens new window)
准备一台服务器或者有 Linux 系统的虚拟机
在 Linux 里,进入 /usr/local/
目录,创建一个目录 elastic-stack
cd /usr/local/
mkdir elastic-stack
2
将下载的 Linux 版本通过 Xftp
工具传输到 Linux 刚刚创建的目录下
在 Linux 里进入该目录,解压压缩包
cd elastic-stack
tar -zxvf elasticsearch-7.15.2-linux-x86_64.tar.gz
2
解压后在当前目录下,如果名字太长,可以去掉版本号,也可以移动到其他位置
# 改名字
mv elasticsearch-7.15.2 es
# 移动位置
mv -r 文件夹 位置
2
3
4
增加 elasticSearch 用户
必须创建一个非 root 用户来运行 ElasticSearch5 及以上版本,基于安全考虑,强制规定不能以 root 身份运行。
如果你使用 root 用户来启动 ElasticSearch,则会报错。
增加 elasticsearch 用户:
useradd elasticsearch
passwd elasticsearch
# 设置的密码
2
3
修改目录权限至新增的 elasticsearch 用户(没权限启动会报错)
在 root 用户下执行命令(ElasticSearch 安装目录)
# ElasticSearch 安装目录
chown -R elasticsearch /usr/local/elastic-stack/es
2
然后修改上述的data和log路径,vi /opt/elasticsearch-7.12.0/config/elasticsearch.yml
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /data/es
#
# Path to log files:
#
path.logs: /var/log/es
2
3
4
5
6
7
8
9
配置文件修改
- 修改系统中允许应用最多创建多少文件等的限制权限。Linux 默认来说,一般限制应用最多创建的文件是 65535 个。但是 ES 至少需要 65536 的文件创建权限。
- 修改系统中允许用户启动的进程开启多少个线程。默认的 Linux 限制 root 用户开启的进程可以开启任意数量的线程,其他用户开启的进程可以开启 1024个线程。必须修改限制数为 4096+。因为ES至少需要 4096 的线程池预备。ES在 5.x 版本之后,强制要求在 Linux 中不能使用 root 用户启动 ES 进程。所以必须使用其他用户启动 ES 进程才可以。
- Linux 低版本内核为线程分配的内存是 128K。4.x 版本的内核分配的内存更大。如果虚拟机的内存是 1G,最多只能开启 3000+ 个线程数。至少为虚拟机分配 1.5G 以上的内存。
ES 可以对每个进程的文件数进行限制等,如果服务器内存或空间不足,可以通过修改配置文件,进行「裁剪」
修改 /opt/module/es/config/elasticsearch.yml 文件
# 集群名
cluster.name: elasticsearch
# 节点名
node.name: node-1
# 允许外界访问的 ip
network.host: 0.0.0.0
# http 访问端口
http.port: 9200
# 集群节点的 master
cluster.initial_master_nodes: ["node-1"]
2
3
4
5
6
7
8
9
10
修改 /etc/security/limits.conf,在文件末尾中增加下面内容:
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
2
3
修改 /etc/security/limits.d/20-nproc.conf,在文件末尾中增加下面内容:
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制
* hard nproc 4096
# 注:* 带表 Linux 所有用户名称
2
3
4
5
6
修改 /etc/sysctl.conf,在文件末尾中增加下面内容:
# 一个进程可以拥有的 VMA (虚拟内存区域)的数量,默认值为 65536
vm.max_map_count=655360
2
配置文件后,记得重新加载
sysctl -p
切换创建好的用户进行启动
-d 代表后台启动
# 切换用户
su elasticsearch
# 先进入安装目录
cd /usr/local/elastic-stack/es
./bin/elasticsearch -d
2
3
4
5
启动时,会动态生成文件,如果文件所属用户不匹配,会发生错误,需要重新进行修改用户
# ElasticSearch 安装目录
chown -R elasticsearch /usr/local/elastic-stack/es
2
查看安装是否成功
netstat -ntlp | grep 9200
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 11601/java
tcp6 0 0 ::1:9200 :::* LISTEN 11601/java
# 访问成功
[root@VM-0-6-centos ~]# curl 127.0.0.1:9200
{
"name": "KELE-BINGTANG",
"cluster_name": "elasticsearch",
"cluster_uuid": "0Fgi85zRTo2eU6du7A56Kg",
"version": {
"number": "7.15.2",
"build_flavor": "default",
"build_type": "zip",
"build_hash": "93d5a7f6192e8a1a12e154a2b81bf6fa7309da0c",
"build_date": "2021-11-04T14:04:42.515624022Z",
"build_snapshot": false,
"lucene_version": "8.9.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
注意
记得开放端口 9200(外界访问的端口)
2021-11-16 @Young Kbt
# 安装Kibana
Kibana 是一个免费且开放的用户界面,能够让你对 Elasticsearch 数据进行可视化,并 让你在 Elastic Stack 中进行导航。你可以进行各种操作,从跟踪查询负载,到理解请求如 何流经你的整个应用,都能轻松完成。
下载时尽量下载与 ElasicSearch 一致的版本。
# Windows版本
前往官网下载 Windows 版本:https://www.elastic.co/cn/downloads/kibana (opens new window)
下载后进行解压,目录如图:
进入 bin 目录,双击 kibana.bat
启动服务
笔记
启动 Kibana 之前要启动 Elasticsearch
2021-11-14 @Young Kbt
访问:http://localhost:5601/
kibana 会自动去访问 9200,也就是 elasticsearch 的端口号
修改界面语言
访问界面是英文,可修改成中文,进入根目录下的 config 目录,打开 kibana.yml
文件
滑到最底部,加入
# 默认端口
server.port: 5601
# ES 服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"
2
3
4
5
6
7
8
进入根目录下的 bin 目录,执行 kibana.bat 文件即可启动
# Linux版本
请先确保安装了 jdk1.8 以上版本
前往官网下载 Linux 版本:https://www.elastic.co/cn/downloads/kibana (opens new window)
利用 Xftp
工具传输到 Linux 里
解压压缩包
tar -zxvf kibana-7.15.2-linux-x86_64.tar.gz
笔记
解压前记得切换到 root 用户,否则无法解压
2021-11-14 @Young Kbt
名字太长。可以去掉版本号
mv kibana-7.15.2-linux-x86_64 kibana
修改目录权限至新增的 elasticsearch 用户(没权限启动会报错)
在 root 用户下执行命令(ElasticSearch 安装目录)
# ElasticSearch 安装目录
chown -R elasticsearch /usr/local/elastic-stack/kibana
2
修改界面语言
访问界面是英文,可修改成中文,进入根目录下的 config 目录,打开 kibana.yml
文件
vim /usr/local/elastic-stack/kibana/config/kibana.yml
滑到最底部,加入:
# 默认端口
server.port: 5601
# ES 服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"
2
3
4
5
6
7
8
切换创建好的用户进行启动
# 切换用户
su elasticsearch
# 先进入安装目录
cd /usr/local/elastic-stack/kibana-7.15.2-linux-x86_64
./bin/kibana
2
3
4
5
如果打算后台启动:
nohup ./bin/kibana &
注意
记得开放端口 5601(外界访问的端口)
2021-11-16 @Young Kbt
# 安装Head
Head 是 elasticsearch 的图形化界面插件客户端,也是 elasticsearch 的集群管理工具,在集群操作用到。
注意
需要 NodeJS 的环境
2021-11-16 @Young Kbt
下载地址:https://github.com/mobz/elasticsearch-head/ (opens new window)
也可以直接打开 Git Bash Here
,直接下载
git clone https://github.com/mobz/elasticsearch-head.git
# 下载
下载后进行解压,然后在解压目录安装依赖,打开 Vscode 或者管理员运行 CMD
yarn install
npm install
// Make sure to add code blocks to your code group
# 配置文件修改
由于 ES 进程和客户端进程端口号不同,存在跨域问题,所以我们要在 ES 的配置文件中配置下跨域问题。
进入 ES 根目录 /config,修改 elasticsearch 配置文件:elasticsearch.yml,增加以下两句命令:
# 跨域配置:
http.cors.enabled: true
http.cors.allow-origin: "*"
2
3
# 启动测试
yarn run start
npm run start
// Make sure to add code blocks to your code group
启动后打开浏览器,访问:http://localhost:9100/ (opens new window)
# 配置密码访问
使用基本许可证时,默认情况下禁用Elasticsearch安全功能。由于我测试环境是放在公网上的,所以需要设置下密码访问。相关文档可以参考这里 (opens new window)
- 停止 kibana 和 elasticsearch 服务
- 将
xpack.security.enabled
设置添加到 ES_PATH_CONF/elasticsearch.yml 文件并将值设置为 true - 启动elasticsearch (
./bin/elasticsearch -d
) - 执行如下密码设置器,
./bin/elasticsearch-setup-passwords interactive
来设置各个组件的密码 - 将elasticsearch.username设置添加到KIB_PATH_CONF/kibana.yml 文件并将值设置给elastic用户:
elasticsearch.username: "elastic"
- 创建kibana keystore,
./bin/kibana-keystore create
- 在kibana keystore 中添加密码
./bin/kibana-keystore add elasticsearch.password
- 重启kibana 服务即可
nohup ./bin/kibana &
然后就可以使用密码登录了
# 参考文章
https://www.pdai.tech/md/db/nosql-es/elasticsearch-x-install.html