Skip to content
章节导航

单机版安装 ElasticSearch 8.x

创建 Linux 用户

Elasticsearch 默认不允许以 root 账号运行

  • 创建用户:useradd es_root
  • 设置密码:passwd es_root ,密码不得少于 8 个字符,我设置为: 123!@#.com

Elasticsearch 安装

默认安装地址为 /usr/local/es,可以根据自己情况选择

shell
cd /usr/local/es

上传安装包和解压

我这里是 8.4.1 的版本

shell
tar -zvxf elasticsearch-8.4.1-linux-x86_64.tar.gz

进入解压后的文件夹

shell
cd  /usr/local/es/elasticsearch-8.4.1

下面所有的操作,都是进入解压后的文件夹中操作

修改目录权限

具体目录路径,可以进入解压后的 es 目录,执行 pwd 命令查看当前文件夹路径

shell
# chgrp 只是更改文件的属组。
chgrp -R es_root /usr/local/es/elasticsearch-8.4.1

# chown 是改文件的属主与属组  
chown -R es_root /usr/local/es/elasticsearch-8.4.1


# chmod是更改文件的权限   
chmod -R  777 /usr/local/es/elasticsearch-8.4.1

修改文件和进程最大打开数

需要 root 用户,如果系统本身有这个文件最大打开数和进程最大打开数配置,则不用

shell
# 在文件内容最后添加后面两行(切记*不能省略)
vim /etc/security/limits.conf

# 配置内容如下
* soft nofile 65536
* hard nofile 65536

修改虚拟内存空间,默认太小

shell
# 在配置文件中改配置 最后一行上加上,执行 sysctl -p(立即生效)
vim /etc/sysctl.conf

vm.max_map_count=262144

立即生效

shell
sysctl -p

修改虚拟机 JVM 内存

虚拟机上,修改 elasticsearch 的 JVM 内存,机器内存不足,常规线上推荐 16G 到 24G 内存

shell
vim config/jvm.options

-Xms1g
-Xmx1g

修改 elasticsearch 相关配置

配置信息,直接追加在后面即可!

shell
vim config/elasticsearch.yml

cluster.name: my-application
node.name: node-1
path.data: /usr/local/es/elasticsearch-8.4.1/data # 注意路径
path.logs: /usr/local/es/elasticsearch-8.4.1/logs # 注意路径
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
ingest.geoip.downloader.enabled: false

配置说明

配置说明
cluster.name指定 Elasticsearch 集群的名称。所有具有相同集群名称的节点将组成一个集群。
node.name指定节点的名称。每个节点在集群中应该具有唯一的名称。
path.data指定用于存储 Elasticsearch 索引数据的路径。
path.logs指定 Elasticsearch 日志文件的存储路径。
network.host指定节点监听的网络接口地址。0.0.0.0 表示监听所有可用的网络接口,开启远程访问连接。如果设置具体固定,只能由设置的 IP 访问
http.port指定节点上的 HTTP 服务监听的端口号。默认情况下,Elasticsearch 的 HTTP 端口是 9200。
cluster.initial_master_nodes指定在启动集群时作为初始主节点的节点名称。
xpack.security.enabled指定是否启用 Elasticsearch 的安全特性。在这里它被禁用(false),意味着不使用安全功能。
xpack.security.enrollment.enabled指定是否启用 Elasticsearch 的安全认证和密钥管理特性。在这里它被禁用(false)。
ingest.geoip.downloader.enabled指定是否启用 GeoIP 数据库下载功能。在这里它被禁用(false)

启动

切换新创建的用户 es_root,如果不切换用户会报 can not run elasticsearch as root 错误

shell
su es_root

进入 bin 目录

shell
cd /usr/local/es/elasticsearch-8.4.1/bin

启动 Elasticsearch

shell
./elasticsearch

第一次启动会报 Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/es/elasticsearch-8.4.1/config/elasticsearch.keystore 错误,是因为 elasticsearch.keystore 是后面生成的。

重新切换 root 用户,授权即可

shell
chgrp -R es_root /usr/local/es/elasticsearch-8.4.1
chown -R es_root /usr/local/es/elasticsearch-8.4.1
chmod -R  777 /usr/local/es/elasticsearch-8.4.1

控制台启动

shell
./elasticsearch

守护线程启动

& 为后台启动,再次提示 es 消息时 Ctrl + c 跳出

shell
./elasticsearch &

查看是否启动成功

shell
lsof -i:9200

如果提示没有,可以通过 yum install lsof -y 命令安装(需要切换至 root 用户)

常见命令

可以用 postman 或者浏览器访问,网络安全组和防火墙记得开发端口,注意更改 IP

常见问题

  • 磁盘空间需要 85% 以下,不然 ES 状态会不正常
  • 不要用 root 用户安装
  • linux 内存不够
  • linux 文件句柄
  • 没开启远程访问 或者 网络安全组没开放端口
  • 有 9300 tcp 端口,和 http 9200 端口,要区分
  • 没权限访问,重新执行目录权限分配
shell
chgrp -R es_root /usr/local/es/elasticsearch-8.4.1
chown -R es_root /usr/local/es/elasticsearch-8.4.1
chmod -R  777 /usr/local/es/elasticsearch-8.4.1