【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- 10分钟快速部署`Elasticsearch`单节点环境
- 1. 系统环境要求
- 1.1 硬件配置推荐
- 1.2 软件依赖
- 2. `Docker`部署方案
- 2.1 部署流程
- 2.2 参数说明
- 2.3 性能优化建议
- 3. 手动部署方案
- 3.1 安装步骤
- 3.2 核心配置项
- 3.3 启动服务
- 4. 部署方式对比
- 5. 验证安装结果
- 5.1 基础健康检查
- 5.2 性能测试
- 6. 常见问题排查
- 6.1 启动失败问题
- 6.2 性能优化检查表
10分钟快速部署Elasticsearch
单节点环境
1. 系统环境要求
1.1 硬件配置推荐
组件 | 开发环境 | 生产环境 |
---|---|---|
CPU | 2核 | 8核+ |
内存 | 4GB | 32GB+ |
磁盘 | 50GB HDD | 1TB SSD RAID |
网络 | 1Gbps | 10Gbps |
1.2 软件依赖
- 可在
Windows
电脑安装虚拟机,完成环境搭建尝试。
软件 | 版本要求 | 备注 |
---|---|---|
OS | Linux内核3.0+ | CentOS/Ubuntu 等 |
Java | JDK 17 | 必须LTS 版本 |
Docker | 20.10+ | 仅容器部署需要 |
文件系统 | ext4/xfs | 推荐使用xfs |
- Java 版本
LTS(Long - Term Support
,长期支持)版本是由 Oracle 或其他供应商提供长期维护和更新的 Java 版本。这些版本为企业和开发者提供了稳定性和安全性保障,适合需要长期稳定运行的应用程序。- 目前的 Java LTS 版本有
Java 8、Java 11 和 Java 17
等。
2. Docker
部署方案
2.1 部署流程
# 创建数据目录
mkdir -p /data/es/{data,logs}# 拉取官方镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.0# 启动容器
docker run -d \--name elasticsearch \-p 9200:9200 \-p 9300:9300 \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-v /data/es/data:/usr/share/elasticsearch/data \-v /data/es/logs:/usr/share/elasticsearch/logs \--ulimit nofile=65535:65535 \docker.elastic.co/elasticsearch/elasticsearch:8.9.0
2.2 参数说明
参数 | 作用说明 |
---|---|
discovery.type | 指定单节点模式 |
ES_JAVA_OPTS | JVM堆内存设置(建议1:1) |
ulimit nofile | 文件描述符限制 |
9200端口 | REST API端口 |
9300端口 | 节点通信端口 |
es.discovery.type
- 在
Elasticsearch
中,es.discovery.type
是一个用于配置节点发现机制的重要参数。节点发现机制决定了Elasticsearch
集群中的节点如何相互找到并组成一个集群。 - 通过设置不同的
es.discovery.type
值,可以实现不同的发现方式,以适应不同的部署环境和需求。
- 在
2.3 性能优化建议
# 修改docker-compose.yml配置
services:elasticsearch:deploy:resources:limits:memory: 4genvironment:- bootstrap.memory_lock=true- thread_pool.write.queue_size=1000
3. 手动部署方案
3.1 安装步骤
# 下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-linux-x86_64.tar.gz# 解压文件
tar -zxvf elasticsearch-8.9.0-linux-x86_64.tar.gz
cd elasticsearch-8.9.0/# 创建专用用户
useradd elastic -s /bin/bash
chown -R elastic:elastic .# 修改系统配置
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p# 修改配置文件
vi config/elasticsearch.yml
3.2 核心配置项
# 定义 Elasticsearch 集群的名称。
# 同一集群内的所有节点必须使用相同的集群名称,以便它们能够识别并加入到同一个集群中。
# 这里将集群名称设置为 my-es-cluster。
cluster.name: my-es-cluster# 指定当前 Elasticsearch 节点的名称。
# 节点名称在集群中应该是唯一的,方便在管理和监控集群时识别不同的节点。
# 此节点的名称被设置为 node-1。
node.name: node-1# 设置 Elasticsearch 存储数据文件的路径。
# 所有的索引数据、分片数据等都会存储在这个目录下。
# 这里指定为 /var/lib/elasticsearch。
path.data: /var/lib/elasticsearch# 设置 Elasticsearch 存储日志文件的路径。
# 包含了节点的运行日志、错误日志等信息,方便后续的问题排查和监控。
# 这里指定为 /var/log/elasticsearch。
path.logs: /var/log/elasticsearch# 配置 Elasticsearch 节点绑定的网络地址。
# 0.0.0.0 表示节点将监听所有可用的网络接口,允许来自任何网络的连接。
# 可以根据实际需求修改为特定的 IP 地址。
network.host: 0.0.0.0# 设置 Elasticsearch 提供 HTTP 服务的端口号。
# 客户端通过这个端口与 Elasticsearch 进行 HTTP 通信,例如执行索引、查询等操作。
# 这里将端口设置为 9200。
http.port: 9200# 配置节点的发现类型。
# single-node 表示该节点将作为单节点集群运行,不会尝试发现其他节点。
# 适用于开发和测试环境。
discovery.type: single-node# 启用 Elasticsearch 的 X-Pack 安全功能。
# 开启后,会提供身份验证、授权、加密等安全特性,增强集群的安全性。
# 设置为 true 表示启用该功能。
xpack.security.enabled: true
3.3 启动服务
su elastic
bin/elasticsearch -d# 生成密码(首次启动后)
bin/elasticsearch-reset-password -u elastic
4. 部署方式对比
对比维度 | Docker 部署 | 手动部署 |
---|---|---|
部署速度 | <2分钟 | 5-10分钟 |
环境隔离 | 完全隔离 | 依赖系统环境 |
升级维护 | 镜像替换即可 | 需手动更新文件 |
资源占用 | 增加约200MB 容器开销 | 直接使用系统资源 |
安全性 | 依赖容器安全策略 | 可深度定制安全配置 |
适用场景 | 快速验证/开发测试 | 生产环境/深度定制 |
5. 验证安装结果
5.1 基础健康检查
curl -XGET "http://localhost:9200/_cluster/health?pretty"# 预期输出
{"cluster_name" : "my-es-cluster","status" : "green","number_of_nodes" : 1
}
5.2 性能测试
# 使用压测工具
ab -n 1000 -c 10 http://localhost:9200/# 典型性能指标
| QPS | 平均响应时间 | 错误率 |
|-----------|--------------|--------|
| 850 req/s | 11ms | 0% |
- ab 是
Apache HTTP 服务器自带的一个性能测试工具
,全称为 ApacheBench。它可以用于对 HTTP 服务器进行压力测试,帮助开发者和运维人员评估服务器在不同负载下的性能表现,比如处理请求的能力、响应时间等。-n 1000
:指定要执行的请求总数为 1000 次。也就是说,ab 工具会向目标服务器发送 1000 个 HTTP 请求。-c 10
:设置并发请求数为 10。意味着在同一时间内,ab 会同时向服务器发送 10 个请求,以此模拟多个用户同时访问服务器的场景。
- 运行该命令后,ab 会输出一系列测试结果,其中一些重要的指标包括:
- 吞吐率(
Requests per second
):表示服务器每秒能够处理的请求数量,数值越高说明服务器处理请求的能力越强。 - 平均响应时间(
Time per request
):包含了每个请求的平均处理时间,能反映出服务器的响应速度。 - 传输速率(
Transfer rate
):指服务器每秒传输的数据量。 - 示例输出片段及解释
Concurrency Level: 10 Time taken for tests: 1.234 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 123456 bytes HTML transferred: 111111 bytes Requests per second: 810.36 [#/sec] (mean) Time per request: 12.340 [ms] (mean) Time per request: 1.234 [ms] (mean, across all concurrent requests) Transfer rate: 98.76 [Kbytes/sec] received
Concurrency Level
:并发请求数,这里是 10。Time taken for tests
:完成所有请求测试所花费的总时间,为 1.234 秒。Complete requests
:成功完成的请求数量,这里 1000 个请求都成功完成。Failed requests
:失败的请求数量,这里为 0。Requests per second
:服务器每秒处理的请求数,平均为 810.36 个。Time per request
:平均每个请求的处理时间,分别展示了单个请求视角和所有并发请求视角下的时间。
- 吞吐率(
6. 常见问题排查
6.1 启动失败问题
错误现象 | 解决方案 |
---|---|
无法绑定端口 | 检查防火墙/SELinux 状态 |
内存不足 | 调整JVM 堆大小 |
文件权限错误 | 递归修改目录属主 |
虚拟内存不足 | 修改vm.max_map_count |
6.2 性能优化检查表
-
JVM
堆内存设置为物理内存的50%
-
- 禁用
swap
分区
- 禁用
-
- 数据目录使用
SSD
存储
- 数据目录使用
-
- 配置合理的日志滚动策略
-
- 启用
bootstrap.memory_lock
bootstrap.memory_lock
是Elasticsearch
中的一个重要配置项,用于控制 Elasticsearch 节点是否锁定其堆内存,防止堆内存被交换到磁盘的交换空间(swap
)中。- 在 Elasticsearch 中,堆内存的使用非常关键,尤其是在处理大量数据和复杂查询时。
- 如果堆内存被交换到磁盘上(即发生了内存交换,
swap
),会严重影响 Elasticsearch 的性能,因为磁盘 I/O 比内存访问要慢得多
。这可能导致查询响应时间变长、吞吐量下降,甚至可能引发节点不稳定或崩溃
。
- 启用
相关文章:

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 10分钟快速部署Elasticsearch单节点环境1. 系统环境要求1.1 硬件配置推荐1.2 软件依赖 2. Docker部署方案2.1 部署流程2.2 参数说明2.3 性能优化建议 3. 手动部署方案3.1 安…...
如何使用useEffect模拟组件的生命周期?
什么是 useEffect? useEffect 是 React 提供的一个 Hook,用于处理副作用(side effects)。它允许你在函数组件中执行一些操作,这些操作通常会影响组件的渲染,比如数据获取、订阅、DOM 操作等。通过 useEffe…...

【DeepSeek】私有化本地部署图文(Win+Mac)
目录 一、DeepSeek本地部署【Windows】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 a、直接访问 b、chatbox网页访问 二、DeepSeek本地部署【Mac】 1、安装Ollama 2、配置环境变量 3、下载模型 4、使用示例 5、删除已下载的模型 三、DeepSeek其他 …...

Python 入门教程(2)搭建环境 | 2.3、VSCode配置Python开发环境
文章目录 一、VSCode配置Python开发环境1、软件安装2、安装Python插件3、配置Python环境4、包管理5、调试程序 前言 Visual Studio Code(简称VSCode)以其强大的功能和灵活的扩展性,成为了许多开发者的首选。本文将详细介绍如何在VSCode中配置…...
Wireshark详解
Wireshark使用详解 1.Wireshark 简介2.下载与安装1. 下载地址2. 安装步骤(以 Windows 为例) 3. 界面与核心功能1. 主界面布局2. 常用菜单功能 4. 过滤功能详解1. 过滤类型2. 常用过滤命令 5. 过滤命令与网络结构对应6. 使用注意事项7. 案例分析 TCP 三次…...
《从零开始掌握Python:一份全面的学习指南》
一、为什么选择Python? Python以其简洁优雅的语法和强大的生态系统成为全球最受欢迎的编程语言之一。无论是开发网站、分析数据、构建人工智能模型,还是自动化办公,Python都能轻松胜任。 学习门槛低:代码如英文般直观,例如 print("Hello, World!")。 应用领域广…...

布署elfk-准备工作
建议申请5台机器部署elfk: filebeat(每台app)--> logstash(2台keepalived)--> elasticsearch(3台)--> kibana(部署es上)采集输出 处理转发 分布式存储 展示 ELK中文社区: 搜索客,搜索人自己的社区 官方…...

LlamaFactory-webui:训练大语言模型的入门级教程
LlamaFactory是一个开源框架,支持多种流行的语言模型,及多种微调技术,同时,以友好的交互式界面,简化了大语言模型的学习。 本章内容,从如何拉取,我已经搭建好的Llamafactory镜像开始࿰…...
达梦数据库授权给某个用户查询其他指定用户下所有表的权限
方法1: 新版本有一个数据库参数 GRANT_SCHEMA,表示是否开启授予和回收模式权限功能。0:否;1:是 此参数为静态参数,默认是0,将改参数修改为1后,重启数据库生效。 将参数修改为1 S…...

uniapp 微信小程序打包之后vendor.js 主包体积太大,解决办法,“subPackages“:true设置不生效
现在是打包的时候,vendor.js 的内容全部打到了主包里面, 说一下我的方法: 1. 通过发行 小程序打包 这样打包的体积是最小的,打包之后打开微信开发工具,然后再上传 2.manifest.json,在“mp-weixin”里添加代码 "…...

Docker数据卷容器实战
数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据,那么如何实现容器和容器之间的共享数据呢?那就是创建 创建数据卷容器。 命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载…...
【Eureka 缓存机制】
今天简单介绍一下Eureka server 的缓存机制吧✌️✌️✌️ 一、先来个小剧场:服务发现的"拖延症" 想象你是个外卖小哥(客户端),每次接单都要打电话问调度中心(Eureka Server):“现在…...
docker-compose方式启动Kafka Sasl加密认证(无zk)
首先参考文档,思考过程可以进行参考https://juejin.cn/post/7294556533932884020#heading-3 用的镜像是Bitnami,对SASL配置进行了简化,需要按照特定格式去配置jass验证 完整配置如下 镜像版本参考:https://hub.docker.com/r/bitn…...

[ComfyUI]官方已支持Skyreels混元图生视频,速度更快,效果更好(附工作流)
一、介绍 昨天有提到官方已经支持了Skyreels,皆大欢喜,效果更好一些,还有GGUF量化版本,进一步降低了大家的显存消耗。 今天就来分享一下官方流怎么搭建,我体验下来感觉更稳了一些,生成速度也更快…...

数据库导出
MySQL数据库 使用命令行导出 导出整个数据库:在命令行中输入mysqldump -u用户名 -p密码 数据库名 > 导出文件路径/文件名.sql。例如mysqldump -uroot -p123456 mydb > /home/user/mydb_backup.sql,回车后输入密码即可将名为mydb的数据库导出为SQL…...
Flask 应用结构与模块化管理详细笔记
1. 代码结构优化:StructureA 最初的 Flask 项目结构适用于小型应用,但不适用于大型应用。为了改进代码结构,我们将 URL 管理应用拆分为多个模块。 1.1 StructureA 目录结构 StructureA |-- .flaskenv |-- app.py |-- views.py |-- templat…...
Excel的两个小问题解决
(一)因为合并单元格存在,无法使用下拉自动填充公式。 解决方案: 使用 CtrlEnter 组合键 选中目标区域:选中需要应用公式的所有合并单元格区域,这些单元格可能是由 2 行或 3 行等合并而成。输入公式&…...

计算机毕业设计Python+DeepSeek-R1大模型期货价格预测分析 期货价格数据分析可视化预测系 统 量化交易大数据 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
JVM 面试
JVM 运行时内存区域划分是怎样的? 程序计数器:记录当前线程执行的字节码指令的地址,是线程私有的。 Java 虚拟机栈:每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息&#…...

智慧后勤的消防管理:豪越科技为安全护航
智慧后勤消防管理难题大揭秘! 在智慧后勤发展得如火如荼的当下,消防管理却暗藏诸多难题。传统模式下,消防设施分布得那叫一个散,就像一盘散沙,管理起来超费劲。人工巡检不仅效率低,还容易遗漏,不…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...