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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rt-thread源码剖析(1)——内核对象

前言 该系列基于rtthread-nano的内核源码&#xff0c;来研究RTOS的底层逻辑&#xff0c;本文介绍RTT的内核对象&#xff0c;对于其他RTOS来说也可供参考&#xff0c;万变不离其宗&#xff0c;大家都是互相借鉴&#xff0c;实现不会差太多。 内核对象容器 首先要明确的一点是什…

html css js网页制作成品——HTML+CSS甜品店网页设计(5页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…

Trae根据原型设计稿生成微信小程序密码输入框的踩坑记录

一、需求描述 最近经常使用Trae生成一些小组件和功能代码&#xff08;对Trae赶兴趣的可以看之前的文章《TraeAi上手体验》&#xff09;&#xff0c;刚好在用uniapp开发微信小程序时需要开发一个输入密码的弹框组件&#xff0c;于是想用Trae来实现。原型设计稿如下&#xff1a;…

斩波放大器

目录 简介 自稳零斩波放大器 噪声 简介 双极性放大器的失调电压为25 μV&#xff0c;漂移为0.1 μV/C。斩波放大器尽管存在一些不利影 响&#xff0c;但可提供低于5 μV的失调电压&#xff0c;而且不会出现明显的失调漂移&#xff0c; 以下图1给出了基本的斩波放大器电路图。…

windows设置暂停更新时长

windows设置暂停更新时长 win11与win10修改注册表操作一致 &#xff0c;系统界面不同 1.打开注册表 2.在以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键新建 DWORD 32位值&#xff0c;名称为FlightSettingsMaxPauseDays 根据需求填写数…

DIALOGPT:大规模生成式预训练用于对话响应生成

摘要 我们提出了一个大规模、可调节的神经对话响应生成模型&#xff0c;DIALOGPT&#xff08;对话生成预训练变换器&#xff09;。该模型训练于从2005年至2017年间Reddit评论链中提取的1.47亿次类似对话的交流&#xff0c;DIALOGPT扩展了Hugging Face的PyTorch变换器&#xff…

Mac端不显示正常用户名,变成192的解决方法

今天打开终端&#xff0c;本应该显示机器名的&#xff0c;但是此时显示了192。 问题原因&#xff1a; 当路由器的DNS使用默认的 192.168.1.1 或 192.168.0.1 的时候 Terminal 里的计算机名 会变成 localhost。当路由器的DNS使用自定义的 例如 运营商的DNS 或者 公共DNS的时候 …

SD 卡无屏安装启动树莓派5

最近想用一下树莓派5&#xff0c;拿出来一看&#xff0c;是 Micro-HMDI 的接口&#xff0c;手头正好没有这个接口线&#xff0c;便研究如何在没有显示屏的情况下&#xff0c;安装启动树莓派。 一、使用 Raspberry Pi Imager 烧录 SD 卡 选择 Raspberry Pi Imager 来烧录 SD 卡…

Xlua 编译 Windows、UWP、Android、iOS 平台支持库

Xlua 编译 Windows、UWP、Android、iOS 平台支持库 Windows&#xff1a; 安装 Visual Studio&#xff08;推荐 2017 或更高版本&#xff09; 安装 CMake&#xff08;https://cmake.org/&#xff09; macOS&#xff1a; 安装 Xcode 和命令行工具 安装 CMake 检查 cmake 是否安…

npm : 无法加载文件 E:\ProgramFiles\Nodejs\npm.ps1,因为在此系统上禁止运行脚本。

这个错误是因为 Windows 系统的 PowerShell 执行策略 限制了脚本的运行。默认情况下&#xff0c;PowerShell 的执行策略是 Restricted&#xff0c;即禁止运行任何脚本。以下是解决该问题的步骤&#xff1a; 1. 检查当前执行策略 打开 PowerShell&#xff08;管理员权限&#x…

基于专利合作地址匹配的数据构建区域协同矩阵

文章目录 地区地址提取完成的处理代码 在专利合作申请表中&#xff0c;有多家公司合作申请。在专利权人地址中&#xff0c; 有多个公司的地址信息。故想利用这里多个地址。想用这里的地址来代表区域之间的专利合作情况代表区域之间的协同、协作情况。 下图是专利合作表的一部分…

若依vue plus环境搭建

继前面文章若依系统环境搭建记录-CSDN博客 把ruoyi vue plus也摸索了下。 作者是疯狂的狮子&#xff0c;dromara/RuoYi-Vue-Plus 初始化文档&#xff1a;项目初始化&#xff0c;环境搭建的视频&#xff1a;RuoYi-Vue-Plus 5.0 搭建与运行_哔哩哔哩_bilibili 上来就列出了一…

在ubuntu如何安装samba软件?

我们在开发过程中&#xff0c;经常修改代码&#xff0c;可以安装samba文件来实现&#xff0c;把ubuntu的存储空间指定为我们win上的一个磁盘&#xff0c;然后我们在或者磁盘里面创建.c文件&#xff0c;进行代码修改和编写。samba能将linux的文件目录直接映射到windows&#xff…

论文阅读笔记: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损失…

使用 Polars 进行人工智能医疗数据分析(ICU数据基本测试篇)

引言 在医疗领域&#xff0c;数据就是生命的密码&#xff0c;每一个数据点都可能蕴含着拯救生命的关键信息。特别是在 ICU 这样的重症监护场景中&#xff0c;医生需要实时、准确地了解患者的病情变化&#xff0c;以便做出及时有效的治疗决策。而随着医疗技术的飞速发展&#x…

Fiddler在Windows下抓包Https

文章目录 1.Fiddler Classic 配置2.配置浏览器代理自动代理手动配置浏览器代理 3.抓取移动端 HTTPS 流量&#xff08;可选&#xff09;解决抓取 HTTPS 失败问题1.Fiddler证书过期了 默认情况下&#xff0c;Fiddler 无法直接解密 HTTPS 流量。需要开启 HTTPS 解密&#xff1a; 1…

Anaconda安装 超详细版 (2025版)

目录 第一步&#xff1a;下载anaconda安装包 官网下载&#xff1a;Anaconda | Built to Advance Open Source AI 清华大学镜像站下载&#xff08;速度较快&#xff09; 第二步&#xff1a;安装anaconda 第三步&#xff1a;验证安装 扩展 创建conda基本环境 激活conda环…

想知道两轮差速方形底盘 URDF 咋做,ROS2 配 Rviz 咋显示吗?看这里!

视频讲解 想知道两轮差速方形底盘 URDF 咋做&#xff0c;ROS2 配 Rviz 咋显示吗&#xff1f;看这里&#xff01; 模型概述 一个方形底盘和两个差速驱动轮 URDF 代码 <?xml version"1.0" encoding"utf-8"?> <robot name"diff"> …

轻量化网络设计|ShuffleNet:深度学习中的轻量化革命

一、引言 在深度学习中&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;无疑是大家最耳熟能详的算法之一。自诞生以来&#xff0c;CNN 在图像分类、目标检测、语义分割等众多计算机视觉任务中取得了令人瞩目的成就&#xff0c;…

最好Wordpree+Apache+PHP安装教程

前提需要 PHP的安装最少需要7.4以上Mysql的安装&#xff0c;直接默认最新版就行APache服务器&#xff08;HTTP服务器&#xff0c;只有用这个你的软件才能在服务器上运行&#xff09; 安装apache 安装 sudo apt install apache2查看防火墙 sudo ufw app list如果有 Apache那…