ElasticSearch安装
ElasticSearch安装
官网下载Linux对应的版本, 把文件上传到服务器。

解压 tar -zxvf elasticsearch-8.14.1-linux-x86_64.tar.gz

ElasticSearch文件目录的含义
目录 | 含义 |
---|---|
bin | 可执行文件目录 |
config | 配置文件目录 |
jdk | JAVA工具包 |
lib | 第三方依赖库 |
logs | 输出日志目录 |
modules | 依赖模块目录 |
plugins | 插件目录 |
data | 数据存储目录 |
1.新建一个用户(处于安全考虑elasticsearch 不允许以root用户运行)
# 创建用户
useradd es
# 为用户修改密码
passwd es
2.修改配置文件
# 编辑jvm.options
vim jvm.options
vim elasticsearch.yml
进入elasticsearch
目录下的 elasticsearch.yml
修改如下属性: cluster.name
:集群名称,根据自己业务启个合适的名字 node.name
:给节点起个名字,一般使用node-1
、node-2
、… path.data
:数据存放的位置,比如:/home/apps/elasticsearch/data
path.logs
:日志存放的位置,比如:/home/apps/elasticsearch/logs
network.host
:配置成本机 IP 地址,用于集群机器之间相互通信。默认只允许本机访问,修改为0.0.0.0后则可以远程访问 http.port
:ES 服务访问的端口号,比如:9200
discovery.seed_hosts
:配置为 master 候选者节点。如果要与其他节点组成集群,这里必须配置。比如:["10.20.1.29", "10.20.0.91", "10.20.0.93"]
cluster.initial_master_nodes
:首次启动集群时,配置主节点的候选节点,该配置里的节点都是候选节点。比如:["node-1", "node-2", "node-3"]




刚才指定了数据目录位置,还有日志目录位置,这两个位置根据个人习惯即可,接下来创建文件夹并修改权限
# 创建文件夹
mkdir -p /home/apps/elasticsearch/data
# 修改文件夹所属用户
chown -R es:es /home/apps/elasticsearch/data
# 创建文件夹
mkdir -p /home/apps/elasticsearch/logs
# 修改文件夹所属用户
chown -R es:es /home/apps/elasticsearch/logs
启动 ES
不过一般会出现如下 3 个错误,一个个搜索解决就行:
- 不能以 root 用户启动 ES,所以在启动之前要先创建一个系统用户,然后
su xxxxxx
切换到该用户去启动。 将 安装的 elasticsearch 文件夹授权给es用户,然后切换为es用户启动
chown -R es:es /home/apps/elasticsearch
# 登录es用户,启动
su es
cd /home/apps/elasticsearch/bin/
./elasticsearch
- 虚拟内存不够,报错如下:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
此时需要修改sysctl.conf
文件,vim /etc/sysctl.conf
进入文件,调大。
vm.max_map_count=655360
重启使配置生效sysctl -p
- 可操作性的文件句柄数不够,报错如下:
max file descriptors [65535] for elasticsearch process is too low
进入文件vim /etc/security/limits.conf
,调大句柄数。
* hard nofile 65536
* soft nofile 65536

- 本地没有那么大内存
Native memory allocation (mmap) failed to map 920649728 bytes.

received plaintext http traffic on an https channel, closing connection
ES8默认开启了 ssl 认证

启动成功效果

# Ww8fL6qh_ojdHreEhrCP
bin/elasticsearch-reset-password -u elastic
eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTAuNDIuMC4wOjkyMDAiXSwiZmdyIjoiYzRiNmRmZjAxYTQ0NWRlMmFhZWNmZWI2MzA5NThkNGY5YjI3NTI2YzhjYmM2YzVjZjVmMmE3ZGE0ZGJjZWRiMiIsImtleSI6InNkYWZtNUFCWUs1RFR1RkFnbGhzOnpyZmxLRGZzUndLeENORlBtMU5vTmcifQ==
eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTAuNDIuMC4wOjkyMDAiXSwiZmdyIjoiYzRiNmRmZjAxYTQ0NWRlMmFhZWNmZWI2MzA5NThkNGY5YjI3NTI2YzhjYmM2YzVjZjVmMmE3ZGE0ZGJjZWRiMiIsImtleSI6InM5YWZtNUFCWUs1RFR1RkFnbGh5Om9NYWxFWDB6Unlhb1pFTWxoeVhsVXcifQ==
访问一下看看

上述启动命令默认是前台启动,窗口关闭后,将会退出,如果需要后台启动,则输入以下命令
./elasticsearch -d
解决es强依赖jdk问题
由于es和jdk是一个强依赖的关系,所以当我们在新版本的ElasticSearch压缩包中包含有自带的jdk,但是当我们的Linux中已经安装了jdk之后,就会发现启动es的时候优先去找的是Linux中已经装好的jdk,此时如果jdk的版本不一致,就会造成jdk不能正常运行,报错。
warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_291/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
注:如果Linux服务本来没有配置jdk,则会直接使用es目录下默认的jdk,反而不会报错
解决办法:
- 进入bin目录,我这里文件放在
cd /root/ElasticSearch/elasticsearch-8.14.1/bin
- 修改elasticsearch配置
vim ./elasticsearch
############## 添加配置解决jdk版本问题 ##############
# 将jdk修改为es中自带jdk的配置目录
export JAVA_HOME=/home/apps/elasticsearch/jdk
export PATH=$JAVA_HOME/bin:$PATH
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/apps/elasticsearch/jdk/bin/java"
else
JAVA=`which java`
fi