当前位置: 首页 > news >正文

【实战 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 硬件配置推荐

组件开发环境生产环境
CPU2核8核+
内存4GB32GB+
磁盘50GB HDD1TB SSD RAID
网络1Gbps10Gbps

1.2 软件依赖

  • 可在Windows电脑安装虚拟机,完成环境搭建尝试。
软件版本要求备注
OSLinux内核3.0+CentOS/Ubuntu
JavaJDK 17必须LTS版本
Docker20.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_OPTSJVM堆内存设置(建议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 性能优化检查表

    1. JVM堆内存设置为物理内存的50%
    1. 禁用swap分区
    1. 数据目录使用SSD存储
    1. 配置合理的日志滚动策略
    1. 启用bootstrap.memory_lock
    • bootstrap.memory_lockElasticsearch 中的一个重要配置项,用于控制 Elasticsearch 节点是否锁定其堆内存,防止堆内存被交换到磁盘的交换空间(swap)中。
      • 在 Elasticsearch 中,堆内存的使用非常关键,尤其是在处理大量数据和复杂查询时。
      • 如果堆内存被交换到磁盘上(即发生了内存交换,swap),会严重影响 Elasticsearch 的性能,因为磁盘 I/O 比内存访问要慢得多。这可能导致查询响应时间变长、吞吐量下降,甚至可能引发节点不稳定或崩溃

相关文章:

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 10分钟快速部署Elasticsearch单节点环境1. 系统环境要求1.1 硬件配置推荐1.2 软件依赖 2. Docker部署方案2.1 部署流程2.2 参数说明2.3 性能优化建议 3. 手动部署方案3.1 安…...

如何使用useEffect模拟组件的生命周期?

什么是 useEffect&#xff1f; useEffect 是 React 提供的一个 Hook&#xff0c;用于处理副作用&#xff08;side effects&#xff09;。它允许你在函数组件中执行一些操作&#xff0c;这些操作通常会影响组件的渲染&#xff0c;比如数据获取、订阅、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&#xff08;简称VSCode&#xff09;以其强大的功能和灵活的扩展性&#xff0c;成为了许多开发者的首选。本文将详细介绍如何在VSCode中配置…...

Wireshark详解

Wireshark使用详解 1.Wireshark 简介2.下载与安装1. 下载地址2. 安装步骤&#xff08;以 Windows 为例&#xff09; 3. 界面与核心功能1. 主界面布局2. 常用菜单功能 4. 过滤功能详解1. 过滤类型2. 常用过滤命令 5. 过滤命令与网络结构对应6. 使用注意事项7. 案例分析 TCP 三次…...

《从零开始掌握Python:一份全面的学习指南》

一、为什么选择Python? Python以其简洁优雅的语法和强大的生态系统成为全球最受欢迎的编程语言之一。无论是开发网站、分析数据、构建人工智能模型,还是自动化办公,Python都能轻松胜任。 学习门槛低:代码如英文般直观,例如 print("Hello, World!")。 应用领域广…...

布署elfk-准备工作

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

LlamaFactory-webui:训练大语言模型的入门级教程

LlamaFactory是一个开源框架&#xff0c;支持多种流行的语言模型&#xff0c;及多种微调技术&#xff0c;同时&#xff0c;以友好的交互式界面&#xff0c;简化了大语言模型的学习。 本章内容&#xff0c;从如何拉取&#xff0c;我已经搭建好的Llamafactory镜像开始&#xff0…...

达梦数据库授权给某个用户查询其他指定用户下所有表的权限

方法1&#xff1a; 新版本有一个数据库参数 GRANT_SCHEMA&#xff0c;表示是否开启授予和回收模式权限功能。0&#xff1a;否&#xff1b;1&#xff1a;是 此参数为静态参数&#xff0c;默认是0&#xff0c;将改参数修改为1后&#xff0c;重启数据库生效。 将参数修改为1 S…...

uniapp 微信小程序打包之后vendor.js 主包体积太大,解决办法,“subPackages“:true设置不生效

现在是打包的时候&#xff0c;vendor.js 的内容全部打到了主包里面&#xff0c; 说一下我的方法&#xff1a; 1. 通过发行 小程序打包 这样打包的体积是最小的&#xff0c;打包之后打开微信开发工具&#xff0c;然后再上传 2.manifest.json,在“mp-weixin”里添加代码 "…...

Docker数据卷容器实战

数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据&#xff0c;那么如何实现容器和容器之间的共享数据呢&#xff1f;那就是创建 创建数据卷容器。 命名的容器挂载数据卷&#xff0c;其他容器通过挂载这个&#xff08;父容器&#xff09;实现数据共享&#xff0c;挂载…...

【Eureka 缓存机制】

今天简单介绍一下Eureka server 的缓存机制吧✌️✌️✌️ 一、先来个小剧场&#xff1a;服务发现的"拖延症" 想象你是个外卖小哥&#xff08;客户端&#xff09;&#xff0c;每次接单都要打电话问调度中心&#xff08;Eureka Server&#xff09;&#xff1a;“现在…...

docker-compose方式启动Kafka Sasl加密认证(无zk)

首先参考文档&#xff0c;思考过程可以进行参考https://juejin.cn/post/7294556533932884020#heading-3 用的镜像是Bitnami&#xff0c;对SASL配置进行了简化&#xff0c;需要按照特定格式去配置jass验证 完整配置如下 镜像版本参考&#xff1a;https://hub.docker.com/r/bitn…...

[ComfyUI]官方已支持Skyreels混元图生视频,速度更快,效果更好(附工作流)

一、介绍 昨天有提到官方已经支持了Skyreels&#xff0c;皆大欢喜&#xff0c;效果更好一些&#xff0c;还有GGUF量化版本&#xff0c;进一步降低了大家的显存消耗。 今天就来分享一下官方流怎么搭建&#xff0c;我体验下来感觉更稳了一些&#xff0c;生成速度也更快&#xf…...

数据库导出

MySQL数据库 使用命令行导出 导出整个数据库&#xff1a;在命令行中输入mysqldump -u用户名 -p密码 数据库名 > 导出文件路径/文件名.sql。例如mysqldump -uroot -p123456 mydb > /home/user/mydb_backup.sql&#xff0c;回车后输入密码即可将名为mydb的数据库导出为SQL…...

Flask 应用结构与模块化管理详细笔记

1. 代码结构优化&#xff1a;StructureA 最初的 Flask 项目结构适用于小型应用&#xff0c;但不适用于大型应用。为了改进代码结构&#xff0c;我们将 URL 管理应用拆分为多个模块。 1.1 StructureA 目录结构 StructureA |-- .flaskenv |-- app.py |-- views.py |-- templat…...

Excel的两个小问题解决

&#xff08;一&#xff09;因为合并单元格存在&#xff0c;无法使用下拉自动填充公式。 解决方案&#xff1a; 使用 CtrlEnter 组合键 选中目标区域&#xff1a;选中需要应用公式的所有合并单元格区域&#xff0c;这些单元格可能是由 2 行或 3 行等合并而成。输入公式&…...

计算机毕业设计Python+DeepSeek-R1大模型期货价格预测分析 期货价格数据分析可视化预测系 统 量化交易大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

JVM 面试

JVM 运行时内存区域划分是怎样的&#xff1f; 程序计数器&#xff1a;记录当前线程执行的字节码指令的地址&#xff0c;是线程私有的。 Java 虚拟机栈&#xff1a;每个方法在执行时都会创建一个栈帧&#xff0c;用于存储局部变量表、操作数栈、动态链接、方法出口等信息&#…...

智慧后勤的消防管理:豪越科技为安全护航

智慧后勤消防管理难题大揭秘&#xff01; 在智慧后勤发展得如火如荼的当下&#xff0c;消防管理却暗藏诸多难题。传统模式下&#xff0c;消防设施分布得那叫一个散&#xff0c;就像一盘散沙&#xff0c;管理起来超费劲。人工巡检不仅效率低&#xff0c;还容易遗漏&#xff0c;不…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...