Linux 环境安装 Elasticsearch 8.X
安装前说明
- 首先确定操作系统,在Linux发行版上执行
uname -a
查看具体系统。我是Ubuntu系统,可以用直接用apt-get
安装,也可以下载tar.gz
包手动安装。使用apt-get
安装更方便快速,但不同的文件会被安装到不同的目录,不方便管理,下载.tar.gz
包后手动安装文件都在同一个目录下,查看更方便,但安装较为麻烦,请注意取舍。- elasticsearch 安装需要依赖JDK,最新版的安装包会自带JDK(bundled),如果你的环境中没有安装JDK或未配置
JAVA_HOME
环境变量,则会直接使用它自带的JDK,如果你的环境中已经安装有 JDK并配置了JAVA_HOME
环境变量,会优先使用你的 JDK,但需要保证你的JDK版本与 elasticsearch 需要的版本匹配,最好是openjdk。- 我在第一次使用
apt-get
安装时因为未修改默认JVM堆内存配置(4G),导致oom安装失败,所以第二次通过.tar.gz
包安装前将JVM堆内存修改成了1G,你可以按你的环境配置决定。
注意:请先阅读下面两种安装方式的步骤,选择合适的安装方式后再进行安装
使用 apt-get 安装
注意:这种方式安装安装简单,但 elasticsearch 的各类文件不在同一个目录下,不方便管理
参照 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)的密码,登录使用
。
然后根据最后的提示,再执行如下命令启动:
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
说明安装完成!
相关文章:
Linux 环境安装 Elasticsearch 8.X
安装前说明 首先确定操作系统,在Linux发行版上执行uname -a查看具体系统。我是Ubuntu系统,可以用直接用apt-get安装,也可以下载tar.gz包手动安装。使用apt-get安装更方便快速,但不同的文件会被安装到不同的目录,不方便…...
Java零基础-集合:函数式接口
哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…...
Redis Scan指令解析与使用示例
Redis Scan指令解析与使用示例 概念 想要从redis key列表中找到某个key,redis提供了一个简单粗暴的指令keys用来列出满足查询条件的所有key。 keys redis* keys redis*keykey指令非常简单,只要提供一个简单的正则表达式即可,但是有两个明显的…...
Qt+OpenGL入门教程(三)——绘制三角形
通过前两篇文章的学习,我想大家应该有了基本的理解,我们接下来实操一下。 创建Qt OpenGL窗口 QOpenGLWidget QGLWidget是传统QtOpenGL模块的一部分,与其他QGL类一样,应该在新的应用程序中避免使用。相反,从Qt5.4开始…...
springcloud基本使用(搭建eureka服务端)
创建springbootmaven项目 next next finish创建成功 删除项目下所有文件目录,只保留pox.xml文件 父项目中的依赖: springboot依赖: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s…...
第十二章:预处理命令
文章目录 第十二章:预处理命令宏定义无参宏定义带参数的宏定义 文件包含处理 第十二章:预处理命令 作用:由编译预处理程序对程序中的特殊命令作出解释,以产生新的源程序对其进行正式编译 C语言与其他语言的重要区别就是可以使用预…...
Game Audio Programming
音频编程时游戏开发中最容易忽略,学习资源又是很少的环节。接下来,你将和我探索人耳的工作机制。 what is sound? 我们可以解释电视机是如何通过眼睛传递视觉信息的,但却往往无法对听觉信息做出类似的解释。 对声音的科学研究被称为声学&…...
高风险IP来自哪里:探讨IP地址来源及其风险性质
在网络安全领域,高风险IP地址是指那些可能涉及恶意活动或网络攻击的IP地址。了解这些高风险IP地址的来源可以帮助网络管理员更好地识别和应对潜在的安全威胁。本文将探讨高风险IP地址的来源及其风险性质,并提供一些有效的应对措施。 风险IP查询…...
【每日跟读】常用英语500句(300~400)
【每日跟读】常用英语500句 I had to take a shower. 我洗了个澡 Go on in. 赶紧进去吧 Hold up. 等一下 They seem like nice people. 他们看起来像好人 Such a wonderful age. 如此美好的年纪 That’s very impressive. 真厉害 I can see that. 看得出来 You should …...
设计模式(7):装饰器模式
一.装饰器模式职责: 动态的为一个对象增加新的功能;装饰器是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。 …...
Flink SQL填坑记3:两个kafka数据关联查询
在一个项目中,实时生成的统计数据需要关联另外一张表(并非维表),需要统计的数据表是Kafka数据,而需要关联的表,由于不是维度,不能按照主键查询,所以如果放在MySQL上,将存在严重的性能问题,这个时候我想到用将两张表的数据都生成为Kafka数据,然后进行Join操作。中途发…...
移动平台实时动态多点光源方案:Cluster Light
一、什么是 Cluster Light,它具体如何实现多点光源效果? 对于移动设备,如何支持场景中大量的实时点光源一直以来都是比较棘手的问题,因此对于过去,往往有如下两种常规方案: 静态点光源直接烘焙࿰…...
2024年03月CCF-GESP编程能力等级认证C++编程八级真题解析
本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 为丰富食堂菜谱,炒菜部进行头脑风暴。肉类有鸡肉、牛肉、羊肉、猪肉4种,切法有肉排、肉块、肉末3种,配菜有圆白菜、油菜、…...
(十一)图像的罗伯特梯度锐化
环境:Windows10专业版 IDEA2021.2.3 jdk11.0.1 OpenCV-460.jar 系列文章: (一)PythonGDAL实现BSQ,BIP,BIL格式的相互转换 (二)BSQ,BIL,BIP存储格式的相互转换算法 (三…...
实验九 枚举问题(运算模拟)
实验名称:实验九 枚举问题(运算模拟) 实验目的:熟练掌握一些枚举问题的处理方法。 实验内容: 问题描述:(乘积为n个1的数字游戏)两位计算机爱好者在进行“积为n个1的数字游戏”&a…...
2024 年 AI 辅助研发趋势:从研发数字化到 AI + 开发工具 2.0,不止于 Copilot
1. 背景介绍 随着人工智能技术的飞速发展,AI在软件开发领域的应用越来越广泛。从最初的代码补全、错误提示,到现在的代码生成、自动化测试,AI正在逐步改变软件开发的模式。2024年,AI辅助研发的趋势已经从研发数字化向AI开发工具2…...
UE5数字孪生系列笔记(三)
C创建Pawn类玩家 创建一个GameMode蓝图用来加载我们自定义的游戏Mode新建一个Pawn的C,MyCharacter类作为玩家,新建一个相机组件与相机臂组件,box组件作为根组件 // Fill out your copyright notice in the Description page of Project Set…...
ASR-LLM-TTS 大模型对话实现案例;语音识别、大模型对话、声音生成
参考:https://blog.csdn.net/weixin_42357472/article/details/136305123(llm+tts) https://blog.csdn.net/weixin_42357472/article/details/136411769 (asr+vad) 这里LLM用的是chatglm;电脑声音播报用的playsound 1、实时语音识别版本 注意:暂时这项目有个缺陷就是tts…...
主干网络篇 | YOLOv8更换主干网络之EfficientNet
前言:Hello大家好,我是小哥谈。EfficientNet是一种高效的卷积神经网络架构,由Mingxing Tan和Quoc V. Le在2019年提出,其设计思想是在不增加计算复杂度的情况下提高模型的准确性。它引入了一个称为"复合系数"的概念,该系数用于同时缩放网络的深度、宽度和分辨率。…...
Web开发-Django学习笔记
客户端如何获取服务端的数据信息? 通常 是 HTTP网络协议,通过网络传输数据信息。 客户端通过HTTP协议发送请求信息给服务端,并从服务端接收响应信息。 Web 前端开发: (HTML、CSS、JS)文件部署在后端服务…...
关于深度学习的 PyTorch 项目如何上手分析?从什么地方切入?
文章目录 PyTorch 项目分析1.背景2.分析流程 PyTorch 项目分析 1.背景 当我们拿到一个 PyTorch 的深度学习项目时,应该怎么入手?怎么去查看代码? 2.分析流程 首先阅读对应项目的 README.md 文件。通过阅读 README.md ,一般可以…...
JavaEE企业开发新技术4
2.16 模拟Spring IOC容器功能-1 2.17 模拟Spring IOC容器功能-2 什么是IOC? 控制反转,把对象创建和对象之间的调用过程交给Spring框架进行管理使用IOC的目的:为了耦合度降低 解释: 模仿 IOC容器的功能,我们利用 Map…...
CSS使用JS变量
1. CSS变量 CSS 变量(也称为自定义属性)允许我们在 CSS 中定义可重复使用的值,并将其应用于不同的选择器。为了创建一个 CSS 变量,我们需要使用 -- 前缀,然后可以像常规属性一样使用它。 :root {--primary-color: bl…...
拆分巨石:将MVPS和MVAS应用于遗留应用程序——可持续架构(六)
前言 MVP 和 MVA 的概念不仅适用于新应用程序;它们提供了一种新颖的方式来审视对遗留系统的范围变更,以防止过快地承担过多的变化 - 参见图1。MVA 可以帮助组织评估和更新其技术标准,通过展示新技术如何真正对支持 MVP 至关重要。创建 MVA 可…...
Linux renice命令教程:如何优雅地调整进程优先级(附案例详解和注意事项)
Linux renice命令介绍 renice命令在Linux中用于修改已经运行的进程的优先级。这个命令允许你改变一个已经运行的进程的调度优先级。如果我们给一个进程设置了更高的优先级,那么内核将为该进程分配更多的CPU时间。 Linux renice命令适用的Linux版本 renice命令在所…...
Gitea 的详细介绍
什么是 Gitea? Gitea 是一个开源、轻量级的自托管 Git 服务,它允许用户搭建类似于 GitHub 或 GitLab 的代码托管平台。由于采用 Go 语言开发,Gitea 具有高效的性能和跨平台特性,适合个人开发者或小团队使用。 Gitea 的特点 轻量…...
Kotlin object
object 的三种用法 Kotlin 的 object 关键字有三种用法: 对象声明 ,一般用来实现单例伴生对象 ,类似 Java 的 static 关键字,也可以用于工厂方法模式对象表达式 ,一般用来代替 Java 的匿名内部类 对象声明 object 的语义是这样的: 定义一个类并创建一个实例 。不管是对象…...
【Redis】数据类型、事务执行、内存淘汰策略
目录 数据类型 Redis事务执行步骤 步骤: redis内存淘汰策略 设置内存淘汰策略 1.设置配置文件 2.通过命令设置 数据类型 官网解释 Understand Redis data types | Redis 首先,Redis 的所有键都是字符串,常用的数据类型有 5 种:Strin…...
Python Flask Web框架初步入门
前言 flask基础 搭建flask服务器 定义html 使用templates模板定义页面的html html页面编写 render_template传参变量 定义图片 创建static目录,存入图片 html编写 flask入门 网站多域名 网站之间超链接跳转 入门案例 将centos的rpm包下载链接集成到自…...
【设计模式】工厂方法模式详解
在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们…...
专门做捷径网站/广东seo推广
1)下载地址:Apache JMeter - Apache JMeter™ 2)下载完成后解压 在bin目录下找到jmeter.properties文件将界面语言改成中文的 双击jmeter.bat文件启动 3)添加一个线程组 添加>>线程用户>>线程组 设置线程属性&…...
一个公司主体可以在多个网站做备案/竞价托管哪家便宜
1.content-type 是指 数据在 http网络通信的时候,字符串的类型 2.请求有 发送数据的 content-type,有 可以接收的content-type 3.而 编码格式,只是 这个字符串里面的 字符的 编码格式,content-type是这个字符串的 类型 4.而有些特定的 需求 例…...
用新浪云做网站/百度竞价排名什么意思
小编典典将该文件放入资产中 。对于在Android Studio项目中创建的项目,您需要在主文件夹下创建资产文件夹。将该文件读取为:public String loadJSONFromAsset(Context context) {String json null;try {InputStream is context.getAssets().open("…...
国内做网站公司哪家好/抚顺网站seo
● 把电脑的第一启动项设为USB设备启动以往用光盘装系统,必须调整启动项为光驱启动,而现在我们要用U盘装系统,所以要调整为U盘启动。关于这个,不同电脑不同版本的bios有不同的设置方法,不过都大同小异,目的…...
java电商网站开发源码/站长之家是什么网站
for i in $( cd /proc;ls |grep "^[0-9]"|awk ‘ $0 >100‘) ;do awk ‘/Swap:/{aa$2}END{print ‘"$i"‘,a/1024"M"}‘ /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10可以看到pid18906的这个经常 占用了最多的swap然后 我们…...
凡科网做网站花多少钱/互动营销平台
Arch一直在我笔记本里边,只是玩gentoo时我不进Arch了,现在回归Arch,升级到了最新,用上了gentoo的最新的2.6.31内核(自己配置,无initrd),引导程序用的grub4dos:Arch的启动脚本非常优雅,这也是我一眼就喜欢上Archlinux的原因之一:这是我的LXDE桌面:关机时的界面...