1、下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3-linux-x86_64.tar.gz
下载页面: https://www.elastic.co/cn/downloads/elasticsearch
注意事项:Elasticsearch7 开始推荐Java最低版本Java11
2、安装
# 解压安装包
tar -zxvf elasticsearch-7.16.3-linux-x86_64.tar.gz
# 创建目录文件夹
mkdir /usr/local/elasticsearch
# 将解压出来的es安装包文件夹放到 上面创建的目录下面去
mv ~/elasticsearch-7.16.3 /usr/local/elasticsearch
3、添加用户(ES 不能使用root用户启动)
# 新增 elastic 分组
groupadd elastic
# 新增 elastic用户并加入到 elastic 分组
useradd -g elastic elastic
# 设置elastic用户权限
chown -R elastic:elastic /usr/local/elasticsearch/elasticsearch-7.16.13/
# 查看文件夹里面拥有者和拥有组
pwd && ll
4、启动与停止
# 切换到elastic 用户
su elastic
# 进入到 elasticsearch 的bin目录下面去
cd /usr/local/elasticsearch/elasticsearch-7.16.3/bin
# 启动
sh elasticsearch
5、报错与解决
上述错误是因为, ES 在 7.x以后 Java的最低版本要求是Java11了。我们可以切换到内置版本的JDK。 所以通过修改ES内置的配置文件就可以解决这个问题了。
# 编辑bin下面的elasticsearch文件
vim /usr/local/elasticsearch/elasticsearch-7.16.3/bin/elasticsearch-env
定位到下图所示的位置
大致的意思是
-
先去找内置的
ES_JAVA_HOME
环境变量,如果有则使用 ES_JAVA_HOME的环境变量所对应的JAVA。 -
如果没有
ES_JAVA_HOME
环境变量, 则查看JAVA_HOME
环境变量。(此时就会出现Java8 不能使用的问题(JAVA_HOME 指向的是Java8版本))# 报错 Future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_271/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.
解决方法:
- 在 /etc/profile 文件里面添加
ES_JAVA_HOME
环境变量
# 从 elastic 用户 切换到 root用户,使用exit命令退出
exit
# 编辑 /etc/profile
vim /etc/profile
# 在文件末尾添加如下信息
# es java home setting
export ES_JAVA_HOME=/usr/local/elasticsearch/elasticsearch-7.16.3/jdk
# 保存
# :wq! 保存
# 配置生效
source /etc/profile
重新启动
su elastic
cd /usr/local/elasticsearch/elasticsearch-7.16.3/bin
./elasticsearch
注意此时还会没有报错信息的情况下被killed,这是因为内存不够导致的
解决方法: 修改jvm.options
# 进入到文件夹
cd /usr/local/elasticsearch/elasticsearch-7.16.3/config
# 编辑文件
vim jvm.options
################################
# 添加如下配置信息(这里根据你实际可用内存是多少决定JVM内存,我这里1.0G可用,所以我使用的512M)
#添加两行已配置你的jvm内存大小,此处建议为服务器内存的一半,但不要超过32G
-Xmx512m
-Xms512m
#################################
再次执行启动命令
su elastic # 如果当前是 root用户则执行切换用户,如果不是则不用执行
# 进入文件夹
cd /usr/local/elasticsearch/elasticsearch-7.16.3/bin
# 启动es
./elasticsearch
看到这里es就启动成功了。
6、测试
curl localhost:9200
{
"name" : "VM-16-15-centos",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "7gv_6ON9ThetiehwzOSLMg",
"version" : {
"number" : "7.16.3",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "4e6e4eab2297e949ec994e688dad46290d018022",
"build_date" : "2022-01-06T23:43:02.825887787Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
至此es可以正常启动,
7、后台启动
但是还有一个问题,我们希望后台启动,以及开机自启动,如何操作呢?
# 关闭上面启动的es
# 查看es的PID
lsof -i:9200
# kill 掉 es
kill -9 13854
# 切换到 elastic 用户 重启es,
su elastic # 如果当前是 root用户则执行切换用户,如果不是则不用执行
# 进入文件夹
cd /usr/local/elasticsearch/elasticsearch-7.16.3/bin
# 启动es -d 是后台启动
./elasticsearch -d