Linux 环境安装 Elasticsearch 8

ops/2025/2/7 5:40:14/

参照 elastic 官方安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html
安装步骤参照 https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html
按下面步骤依次执行命令:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update && sudo apt-get install elasticsearch

运行完上面命令,不出意外就能安装成功,注意,记录下最后打印的超级用户(superuser)的密码,登录使用
在这里插入图片描述
使用这种方式安装时,安装进程会自动创建elasticsearch.service,因此可以直接使用systemctlelasticsearch 进程作systemd管理,因此可以执行如下命令加入开机自启动并启动 elasticsearch 服务:

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

不出意外的话,会成功。
但是我出意外了,启动失败(忘记截图了),它告诉我可以用journalctl -xeu elasticsearch.service命令查看错误原因:
在这里插入图片描述
看到oom-kill就明白了,我的小服务器内存不够它玩。它默认的堆内存大小是4G,而我的服务器内存总共才4G,所以我需要降低堆内存配置。
这里需要说明的是,正常情况下 elastsearch的安装包下有个config目录保存的是一些配置文件,但是通过apt-get install安装的安装目录/usr/share/elasticsearch下没有config目录:
在这里插入图片描述
于是我就在安装步骤后面找配置文件位置(感兴趣的戳这里查看不同文件所在目录 Directory layout of Debian package),原来配置目录变成了/etc/elasticsearch
在这里插入图片描述
OK,我需要改jvm配置,本来想直接改jvm.options,但是进去发现它建议在jvm.options.d下自己建文件修改,那好吧,我就在下面单独建了个heap.options,里面写上配置:

-Xms1g
-Xmx1g

咱这家底,给分个 1G 让它勉强玩玩得了。
OK,修改好并保存后重新启动,执行systemctl start elasticsearch.service命令,不报错就是成功了。

下载 .tar.gz 安装

这种方式安装较为麻烦,但自主可控。

参考官方安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html
首先下载安装包(官方指南里还会下载tar.gz.sha512后校验文件,这里省略此步骤),然后解压到当前目录:

# 下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.0-linux-x86_64.tar.gz
# 解压
tar -zxvf elasticsearch-8.13.0-linux-x86_64.tar.gz

上面命令会解压文件到./elasticsearch-8.13.0/目录,可以看到各类文件都在同一个目录下:
在这里插入图片描述
由于上面使用apt-get安装时已经知道JVM堆内存不够会导致安装失败,故启动前先修改JVM堆内存为1G,修改方式和上面相同,进入./config/jvm.options.d/目录创建一个heap.options文件,里面写上配置:

-Xms1g
-Xmx1g

修改后保存,再回到./elasticsearch-8.13.0/目录,运行启动文件(加上 -d,守护进程启动,否则退出shell后进程就会挂掉):

./bin/elasticsearch -d # -d 表示守护进程启动

不出意外,肯定失败了。报错信息为 fatal exception while booting Elasticsearchjava.lang.RuntimeException: can not run elasticsearch as root。原来 elasticsearch 不允许root用户进行安装,这是出于安全考虑。
OK,那我们单独新建个用户组 es 和用户 es:

groupadd es #新建用户组 es
useradd es -g es -p 你的密码 # 在 es 用户组下面建 es 用户,并指定你的登录密码

建好新用户后,回到 elasticsearch-8.13.0 的上层目录,为 es 用户授权该目录:

chown -R es:es ./elasticsearch-8.13.0

这时,目录已经属于 es 用户了:
在这里插入图片描述
好的很,然后进入elasticsearch-8.13.0 目录,执行su es命令切换到 es 用户身份,再运行./bin/elasticsearch -d命令启动:

cd ./elasticsearch-8.13.0
su es
# 切换到 es 后执行
./bin/elasticsearch -d

不出意外,会启动成功:
在这里插入图片描述
注意:同上面一样,最后输出的日志非常重要,所以建议复制保存在一个文件中。最后输出的elastic用户的初始密码,你需要记录下来,登录时使用,但如果你忘了没记下来,也可以运行./bin/elasticsearch-reset-password -u elastic重新生成一个。

连接测试

启动成功后我们可以用curl连接默认端口9200测试:

curl 127.0.0.1:9200

不出意外,应该会返回 curl: (52) Empty reply from server。这是因为 elasticsearch 默认开启了 xpack 认证,我们刚开始测试阶段,可以先全部关掉。进入.elasticsearch-8.13.0/config/elasticsearch.yml目录,可以看到与认证相关的配置,这段配置是启动后加上去的,我们将与 xpack 有关的配置修改为 false:
在这里插入图片描述
然后重启即可(先ps找到进程id,kill掉后再运行上面的启动命令)。
本机运行 curl 连接:
在这里插入图片描述
公网浏览器访问http://ip:9200/(如果连接失败可检查防火墙或云服务器安全组是否开放9200端口):
在这里插入图片描述
发送一条查看节点信息的请求ip:9200/_cat/nodes?v
在这里插入图片描述
说明安装完成!

进阶管理

systemd 管理

第二种安装方式是直接执行/bin/elasticsearch启动脚本启动的,但这样不利于系统化管理,也不能开机自启动,我们可以将进程交给systemd管理,但是我们需要自定义一个elasticsearch.service文件。在这篇博客 找到一个现成的elasticsearch.service模板可以直接用。我们需要创建/etc/systemd/system/elasticsearch.service文件,将下面内容复制到文件中,注意要修改下Service.UserService.ExecStart 配置:

[Unit]
Description=elasticsearch
After=network.target[Service]
Type=forking# ============================== 注意 ================================
# 这里要替换成你自己创建的 elasticsearch 用户
User=es
# 这里要替换成你自己的 elasticsearch 安装目录
ExecStart=/usr/local/elasticsearch-8.13.0/bin/elasticsearch -d
# ===================================================================PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143[Install]
WantedBy=multi-user.target

创建好 .service 文件后,依次执行下面命令生效并启动elasticsearch服务:


http://www.ppmy.cn/ops/156355.html

相关文章

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…

工厂方法模式(Java)

工厂方法模式&#xff08;Java&#xff09; 工厂方法模式概述 1. 工厂方法模式的定义 工厂方法模式提供了一种创建对象的方式&#xff0c;而无需指定具体的类。它通过定义一个接口来创建对象&#xff0c;具体的实例化过程由子类实现。这种方式使得代码更加灵活&#xff0c;易…

机器学习8-卷积和卷积核1

机器学习8-卷积和卷积核1 卷积与图像去噪卷积的定义与性质定义性质卷积的原理卷积步骤卷积的示例与应用卷积的优缺点优点缺点 总结 高斯卷积核卷积核尺寸的设置依据任务类型考虑数据特性实验与调优 高斯函数标准差的设置依据平滑需求结合卷积核尺寸实际应用场景 总结 图像噪声与…

蓝桥杯python基础算法(2-2)——基础算法(D)——进制转换*

目录 五、进制转换 十进制转任意进制&#xff0c;任意进制转十进制 例题 P1230 进制转换 作业 P2095 进制转化 作业 P2489 进制 五、进制转换 十进制转任意进制&#xff0c;任意进制转十进制 int_to_char "0123456789ABCDEF" def Ten_to_K(k, x):answer "…

神经网络|(七)概率论基础知识-贝叶斯公式

【1】引言 前序我们已经了解了一些基础知识。 古典概型&#xff1a;有限个元素参与抽样&#xff0c;每个元素被抽样的概率相等。 条件概率&#xff1a;在某条件已经达成的前提下&#xff0c;新事件发生的概率。实际计算的时候&#xff0c;应注意区分&#xff0c;如果是计算综…

第35章 星骗计划的阴影

清晨&#xff0c;阳光透过窗帘缝隙&#xff0c;轻柔地洒落在东方艾艾的办公桌上。他揉了揉惺忪的睡眼&#xff0c;昨晚加班至深夜的疲惫仍未消散。在航天锐创所&#xff0c;刚结束一轮紧张培训&#xff0c;他便马不停蹄地投身于 “星渊计划&#xff1a;航天智擎开发项目” 的筹…

deepseek本地部署

DeepSeek本地部署详细指南 DeepSeek作为一款开源且性能强大的大语言模型&#xff0c;提供了灵活的本地部署方案&#xff0c;让用户能够在本地环境中高效运行模型&#xff0c;同时保护数据隐私&#xff0c;这里记录自己DeepSeek本地部署流程。 主机环境 cpu:amd 7500Fgpu:406…

全面掌握C#的JObject类:C#开发之JSON数据解析与操作实战指南

在C#中&#xff0c;处理JSON数据是日常开发中常见的任务之一。JObject类是 Newtonsoft.Json&#xff08;也称为Json.NET&#xff09;库的一部分&#xff0c;它提供了一个灵活且强大的方式来解析、查询和操作JSON数据。本文将深入探讨JObject类的各种用法&#xff0c;包括基本操…