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

news2025/4/3 22:26:38

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


文章大纲

  • 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: 4g
    environment:
      - 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 比内存访问要慢得多。这可能导致查询响应时间变长、吞吐量下降,甚至可能引发节点不稳定或崩溃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2307272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】

文章目录 前言电脑配置&#xff1a;安装的Deepseek版本&#xff1a;使用的UI框架&#xff1a;体验效果展示&#xff1a;本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…

网络安全学习中,web渗透的测试流程是怎样的?

渗透测试是什么&#xff1f;网络安全学习中&#xff0c;web渗透的测试流程是怎样的&#xff1f; 渗透测试就是利用我们所掌握的渗透知识&#xff0c;对网站进行一步一步的渗透&#xff0c;发现其中存在的漏洞和隐藏的风险&#xff0c;然后撰写一篇测试报告&#xff0c;提供给我…

将VsCode变得顺手好用(1

目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 创建js文件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹&#xff0c;用于放置调试文件以及你未来写的代码&#xff0c;随便命名但…

第6_7章_管理权限评估和测试策略

管理权限 权限将受保护的对象与必须评估以决定是否应授予访问权限的策略相关联。 在创建要保护的资源以及要用于保护这些资源的策略后&#xff0c; 您可以开始管理权限。要管理权限&#xff0c;请在编辑资源服务器时单击 Permissions 选项卡。 可以创建权限来保护两种主要类…

2025年网校系统源码开发趋势:技术革新的教育培训APP搭建实战

2025年&#xff0c;随着AI、大数据、云计算等技术的深度融合&#xff0c;网校教育系统的源码开发也迎来了新的发展趋势。本文将深入探讨这些趋势&#xff0c;并结合教育培训APP的开发实战&#xff0c;展示如何应对未来的技术挑战。 一、2025年网校教育系统源码的技术趋势 AI驱…

Linux驱动开发实战(一):LED控制驱动详解

Linux驱动开发野火实战&#xff08;一&#xff09;&#xff1a;LED控制驱动详解 文章目录 Linux驱动开发野火实战&#xff08;一&#xff09;&#xff1a;LED控制驱动详解引言一、基础知识1.1 什么是字符设备驱动1.2 重要的数据结构read 函数write 函数open 函数release 函数 二…

PowerShell 执行策略:fnm管理软件安装nodejs无法运行npm,错误信息:about_Execution_Policies

通过fnm管理软件安装NodeJS后添加环境变量依然无法执行npm,提示无法加载文件&#xff0c;错误如下&#xff1a; PowerShell 执行策略简介&#xff1a; PowerShell 执行策略是一项安全功能&#xff0c;用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶…

论文阅读笔记:Deep Face Recognition: A Survey

论文阅读笔记&#xff1a;Deep Face Recognition: A Survey 1 介绍2 总览2.1 人脸识别组件2.1.1 人脸处理2.1.2 深度特征提取2.1.3 基于深度特征的人脸对比 3 网络结构和损失函数3.1 判别损失函数的演化3.1.1 基于欧式距离的损失3.1.2 基于角度/余弦边距的损失3.1.3 Softmax损失…

本地dify绑定notion

需要用到 notion 的“集成”功能。对于个人用户来说&#xff0c;选择使用**内部 internal **集成&#xff0c;公司用户可以考虑使用公开 public 集成。 在下面的 notion 集成网站中申请一个新的集成&#xff1a; Notion – The all-in-one workspace for your notes, tasks, …

JSON Schema 入门指南:如何定义和验证 JSON 数据结构

文章目录 一、引言二、什么是 JSON Schema&#xff1f;三、JSON Schema 的基本结构3.1 基本关键字3.2 对象属性3.3 数组元素3.4 字符串约束3.5 数值约束 四、示例&#xff1a;定义一个简单的 JSON Schema五、使用 JSON Schema 进行验证六、实战效果6.1 如何使用 七、总结 一、引…

DeepSeek今日连开3源!针对优化的并行策略,梁文锋本人参与开发

DeepSeek开源周第四天&#xff0c;直接痛快「1日3连发」&#xff0c;且全都围绕一个主题&#xff1a; 优化并行策略。 DualPipe&#xff1a;一种创新的双向流水线并行算法&#xff0c;能够完全重叠前向和后向计算-通信阶段&#xff0c;并减少“流水线气泡”。它通过对称的微批…

【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现

项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…

【华为OD机考】华为OD笔试真题解析(15)--异常的打卡记录

题目描述 考勤记录是分析和考核职工工作时间利用情况的原始依据&#xff0c;也是计算职工工资的原始依据&#xff0c;为了正确地计算职工工资和监督工资基金使用情况&#xff0c;公司决定对员工的手机打卡记录进行异常排查。 如果出现以下两种情况&#xff0c;则认为打卡异常…

Java实战:使用HttpClient实现图片下载与本地保存

在当今数字化时代&#xff0c;网络资源的获取与处理已成为软件开发中的常见需求。其中&#xff0c;图片作为网络上最常见的资源之一&#xff0c;其下载与保存功能在许多应用场景中都显得尤为重要。无论是社交媒体平台、电商平台&#xff0c;还是个人项目&#xff0c;能够高效地…

【实战】使用PCA可视化神经网络提取后的特征空间【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Python毕业设计选题:基于Python的社区爱心养老管理系统设计与实现_django

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 身体健康界面 公共书籍界面 借阅信息界面 归还…

Spring Boot整合WebSocket

目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket&#xff1f; ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…

Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)

Pycharm使用matplotlib出现的问题 问题1&#xff1a;Pycharm调试时出现&#xff1a;AttributeError: module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? 排查原因&#xff1a;可能是由于matplotlib后端设置不正确或与运行环境不兼容引…

【PromptCoder】使用 package.json 生成 cursorrules

【PromptCoder】使用 package.json 生成 cursorrules 在当今快节奏的开发世界中&#xff0c;效率和准确性至关重要。开发者们不断寻找能够优化工作流程、帮助他们更快编写高质量代码的工具。Cursor 作为一款 AI 驱动的代码编辑器&#xff0c;正在彻底改变我们的编程方式。但如…

给博客添加基于百度地图的足迹页面

使用百度地图 api 做的足迹页面一段时间了&#xff0c;经过一番改造&#xff0c;目前已基本能够满足自己需求。 一、添加百度地图 添加百度地图基本思路就是6点&#xff1a; 申请百度AK适当位置添加百度地图容器引入百度地图 api创建地图实例设置地图中心点初始化地图 这里…