单机版安装 ElasticSearch 8.x
创建 Linux 用户
Elasticsearch 默认不允许以 root 账号运行
- 创建用户:
useradd es_root - 设置密码:
passwd es_root,密码不得少于 8 个字符,我设置为:123!@#.com
Elasticsearch 安装
默认安装地址为 /usr/local/es,可以根据自己情况选择
cd /usr/local/es上传安装包和解压
我这里是 8.4.1 的版本
tar -zvxf elasticsearch-8.4.1-linux-x86_64.tar.gz进入解压后的文件夹
cd /usr/local/es/elasticsearch-8.4.1下面所有的操作,都是进入解压后的文件夹中操作
修改目录权限
具体目录路径,可以进入解压后的 es 目录,执行 pwd 命令查看当前文件夹路径
# 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 用户,如果系统本身有这个文件最大打开数和进程最大打开数配置,则不用
# 在文件内容最后添加后面两行(切记*不能省略)
vim /etc/security/limits.conf
# 配置内容如下
* soft nofile 65536
* hard nofile 65536修改虚拟内存空间,默认太小
# 在配置文件中改配置 最后一行上加上,执行 sysctl -p(立即生效)
vim /etc/sysctl.conf
vm.max_map_count=262144立即生效
sysctl -p修改虚拟机 JVM 内存
虚拟机上,修改 elasticsearch 的 JVM 内存,机器内存不足,常规线上推荐 16G 到 24G 内存
vim config/jvm.options
-Xms1g
-Xmx1g修改 elasticsearch 相关配置
配置信息,直接追加在后面即可!
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 错误
su es_root进入 bin 目录
cd /usr/local/es/elasticsearch-8.4.1/bin启动 Elasticsearch
./elasticsearch第一次启动会报 Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/es/elasticsearch-8.4.1/config/elasticsearch.keystore 错误,是因为 elasticsearch.keystore 是后面生成的。 
重新切换 root 用户,授权即可 
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控制台启动
./elasticsearch守护线程启动
& 为后台启动,再次提示 es 消息时 Ctrl + c 跳出
./elasticsearch &查看是否启动成功
lsof -i:9200如果提示没有,可以通过 yum install lsof -y 命令安装(需要切换至 root 用户)
常见命令
可以用 postman 或者浏览器访问,网络安全组和防火墙记得开发端口,注意更改 IP
查看分片情况
http://192.168.253.101:9200/_cat/shards?v=true&pretty查看节点分布情况
http://192.168.253.101:9200/_cat/nodes?v=true&pretty查看索引列表
http://192.168.253.101:9200/_cat/indices?v=true&pretty

常见问题
- 磁盘空间需要 85% 以下,不然 ES 状态会不正常
- 不要用 root 用户安装
- linux 内存不够
- linux 文件句柄
- 没开启远程访问 或者 网络安全组没开放端口
- 有 9300 tcp 端口,和 http 9200 端口,要区分
- 没权限访问,重新执行目录权限分配
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
朔风