【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-3-从ES 7.x到8.x的平滑迁移策略

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


附录-版本升级指南

  • 3-Elasticsearch 7.x 到 8.x 平滑迁移策略指南
    • 1. 升级必要性分析
      • 1.1 版本特性对比
      • 1.2 兼容性评估矩阵
    • 2. 预升级准备清单
      • 2.1 环境检查表
      • 2.2 数据备份策略
    • 3. 分阶段升级流程
      • 3.1 滚动升级步骤(零停机)
      • 3.2 关键操作指令
    • 4. 升级后验证体系
      • 4.1 核心功能验证表
      • 4.2 性能基准对比
    • 5. 回退方案设计
      • 5.1 快速回退流程
      • 5.2 回退检查清单
    • 6. 常见问题解决方案
      • 6.1 典型问题处理矩阵
      • 6.2 关键日志分析
      • Elasticsearch 常用结构化查询参数

3-Elasticsearch 7.x 到 8.x 平滑迁移策略指南

  • Elasticsearch版本升级核心流程与关键节点
开始
环境准备
兼容性检查
数据备份
集群预热
滚动升级
配置调整
功能验证
性能测试
监控与优化
文档更新
结束
插件兼容性检查
查询DSL验证
配置参数审计
快照备份
数据校验
停止节点服务
升级二进制文件
启动节点并验证
循环所有节点
移除弃用配置
启用新特性
核心API测试
集群健康检查
Rally基准测试
压力测试工具
监控集群状态
调整JVM参数
优化分片分配
  • 风险控制矩阵:
风险点预防措施应急方案
插件不兼容提前测试所有插件回滚到7.x并隔离问题插件
数据损坏双重备份+校验从快照恢复数据
性能下降预留30%资源+预热调整JVM参数+分片分配策略
配置错误版本差异文档对照使用默认配置重新初始化
  • 升级验证清单
      1. 集群健康状态(GET /_cluster/health
      1. 节点版本一致性(GET /_nodes/stats
      1. 索引元数据校验(GET /_cat/indices
      1. 搜索功能测试(GET /_search
      1. 写入性能验证(POST /_bulk
      1. 安全插件验证(GET /_security/_authenticate
  • 建议在升级过程中使用以下监控指标:
{// 定义一个包含多个监控指标的数组,用于在 Elasticsearch 集群升级过程中对集群的运行状态进行监控"metrics": [// 监控 JVM 堆内存的使用百分比// 该指标反映了 Elasticsearch 节点上 Java 虚拟机堆内存的使用情况// 过高的堆内存使用百分比可能会导致频繁的垃圾回收,甚至可能引发内存溢出错误,影响集群的性能和稳定性// 一般建议将该指标控制在 70% - 80% 以下,以便为系统预留足够的内存空间"jvm.mem.heap_used_percent",// 监控集群中正在初始化的分片数量// 在集群升级、节点重启或数据重新分配等操作过程中,会有分片进入初始化状态// 过多的初始化分片可能会导致集群资源被大量占用,影响集群的响应速度和可用性// 通过监控该指标,可以及时发现分片初始化过程中是否存在异常情况"cluster.routing.allocation.initializing_shards",// 监控索引搜索操作的执行时间(以毫秒为单位)// 该指标反映了搜索查询在 Elasticsearch 中的执行效率// 搜索查询时间过长可能意味着查询语句复杂、索引结构不合理或集群资源不足等问题// 对该指标进行监控有助于及时发现搜索性能瓶颈,并采取相应的优化措施"indices.search.query_time_in_millis",// 监控搜索线程池的活跃线程数量// 搜索线程池用于处理搜索请求,活跃线程数量反映了当前正在处理搜索请求的线程数量// 如果活跃线程数量持续过高,可能表示搜索请求过于频繁,导致线程池资源耗尽,影响搜索性能// 监控该指标可以帮助我们了解搜索线程池的使用情况,合理调整线程池配置或优化搜索请求负载"thread_pool.search.active"]
}

1. 升级必要性分析

1.1 版本特性对比

功能模块7.x 版本能力8.x 版本增强业务影响评级
安全体系TLS可选TLS默认启用 + 新密码套件⭐⭐⭐⭐⭐
搜索性能传统BM25支持ANN向量搜索⭐⭐⭐⭐
存储效率标准压缩默认ZSTD压缩(提升20%)⭐⭐⭐⭐
运维监控X-Pack基础监控集成APM+机器学习告警⭐⭐⭐
  • 什么是 ES ANN 向量搜索
    • 在 Elasticsearch(ES)中,ANN(Approximate Nearest Neighbor,近似最近邻)向量搜索是一种用于高效查找与给定查询向量最相似的向量数据的技术。在传统的基于关键词的搜索无法满足复杂的语义搜索需求时,向量搜索便发挥出重要作用。例如在图像、音频、文本等领域,通过将这些数据转换为向量表示,利用向量之间的相似度来进行搜索,能实现更精准、更智能的搜索结果
    • ANN 向量搜索的应用场景
      • 图像搜索。用户上传一张图片,系统通过提取图片的向量特征,在 Elasticsearch 中搜索与之相似的图片。
      • 文本语义搜索。输入一段文本,系统可以找到语义相似的其他文本,而不仅仅是关键词匹配的文本。
      • 推荐系统。根据用户的历史行为或偏好生成向量,在商品、文章等数据的向量库中搜索相似的向量,为用户提供个性化推荐。

1.2 兼容性评估矩阵

组件7.17兼容性8.0兼容性风险级别处理方案
JDK版本8/1117+提前升级JDK
Logstash插件部分兼容需7.17+插件版本升级
Kibana仪表盘兼容需重建导出/导入NDJSON
自定义分词器需要验证需要验证测试验证+备用方案
  • NDJSON(Newline-Delimited JSON)
    • 一种轻量级的数据交换格式,由多行独立的 JSON 对象组成,每行一个完整的 JSON 文档,通过换行符(\n)分隔。这种格式特别适合处理日志、流式数据或需要批量处理的结构化数据
  • NDJSON 核心特性
    • 轻量性:无需复杂的解析器,逐行读取即可处理。
    • 流式处理:支持实时数据流处理,适合日志收集、消息队列等场景。
    • 扩展性:每行独立,便于分布式处理。
    • 兼容性:可通过工具轻松转换为 CSV、XML 等格式。
  • NDJSON 在 Elasticsearch 中的应用
    • 批量数据导入。通过 Elasticsearch 的 Bulk API 导入 NDJSON 格式数据:
      curl -X POST "localhost:9200/_bulk" -H "Content-Type: application/x-ndjson" --data-binary @data.ndjson
      
    • 日志处理。在 Logstash 中使用 json_lines codec 处理 NDJSON 日志:
      input {file {path => "/var/log/app.log"codec => json_lines}
      }output {elasticsearch {hosts => ["localhost:9200"]index => "logs-%{+YYYY.MM.dd}"}
      }
      
    • 注意事项
      • 特殊字符处理:确保每行是有效的 JSON,注意转义换行符 \n 和反斜杠 \\
      • 数据完整性:避免在传输过程中丢失换行符,导致解析错误。
      • 性能优化对于大规模数据,建议分批次处理,避免内存溢出。
    • 与其他格式对比
      格式优点缺点适用场景
      NDJSON轻量、流式处理不支持嵌套结构日志、实时数据流
      JSON结构灵活解析复杂、不适合流式处理API 响应、配置文件
      CSV易于表格处理类型不明确数据分析、报表生成

2. 预升级准备清单

2.1 环境检查表

# 检查集群健康状态
GET _cluster/health?filter_path=status,*_active_shards# 验证索引兼容性
GET _index_template?filter_path=index_templates.name,index_templates.index_template.template# 检查废弃API使用情况
GET _nodes/usage?filter_path=.*.deprecations

2.2 数据备份策略

// 向 _snapshot/backup_repo/pre_upgrade_bk_2023 端点发送 PUT 请求,目的是在名为 backup_repo 的快照仓库中创建一个名为 pre_upgrade_bk_2023 的快照
PUT _snapshot/backup_repo/pre_upgrade_bk_2023
{// 指定要包含在快照中的索引// 使用 "*" 表示包含集群中的所有索引,这样会对集群内的所有数据进行备份"indices": "*",// 设置是否忽略不可用的索引// 当设置为 true 时,如果某些索引不可用(例如处于损坏或未分配状态),快照过程不会因为这些不可用的索引而失败,而是会跳过它们继续进行快照操作"ignore_unavailable": true,// 设置是否包含集群的全局状态// 全局状态包含了集群的配置信息、节点信息、索引模板等元数据// 设置为 true 表示在快照中会包含这些全局状态信息,以便在恢复快照时可以还原整个集群的配置"include_global_state": true,// 为快照添加元数据信息// 元数据可以用于记录关于快照的额外信息,方便后续的管理和识别// 这里添加了一个名为 "reason" 的元数据字段,其值为 "pre-upgrade-8.x",表明创建这个快照的原因是在升级到 8.x 版本之前进行备份"metadata": {"reason": "pre-upgrade-8.x"}
}
  • 备份验证指标
    • 成功率:100%索引包含
    • 耗时:≤数据总量/50MB/s
    • 存储空间:原始数据大小×1.2

3. 分阶段升级流程

3.1 滚动升级步骤(零停机)

准备阶段
停用分片分配
升级单个节点
重启并验证节点
是否所有节点升级?
启用分片分配
最终集群检查

3.2 关键操作指令

# 停用分片分配
# 向 _cluster/settings 端点发送 PUT 请求,用于修改集群的持久化设置
# 持久化设置意味着即使集群重启,这些设置仍然会生效
PUT _cluster/settings
{# "persistent" 表示这是持久化设置"persistent": {# 设置集群路由分配的启用规则为 "primaries"# 这意味着只允许主分片进行分配,副本分片的分配将被暂停# 在进行节点升级等操作时,停用分片分配可以避免在升级过程中因分片重新分配而导致的性能问题和数据不一致问题"cluster.routing.allocation.enable": "primaries"}
}# 升级单个节点
# 使用 sudo 以管理员权限执行 systemctl 命令,停止 Elasticsearch 服务
# 停止服务是为了确保在升级过程中不会有新的请求进入,避免数据损坏或升级失败
sudo systemctl stop elasticsearch.service# 使用 sudo 以管理员权限执行 rpm 命令,进行软件包的升级操作
# -Uvh 是 rpm 命令的选项,其中 -U 表示升级,-v 表示显示详细的升级过程信息,-h 表示显示进度条
# elasticsearch-8.8.1.rpm 是 Elasticsearch 8.8.1 版本的 RPM 软件包,通过该命令将节点升级到 8.8.1 版本
sudo rpm -Uvh elasticsearch-8.8.1.rpm# 验证节点状态
# 向 _cat/nodes 端点发送 GET 请求,用于获取集群中节点的信息
# v 参数表示以表格形式输出详细信息,方便查看
# h 参数用于指定要显示的列,这里指定显示节点的名称(name)、版本(version)和角色(roles)
# 通过查看这些信息,可以确认节点是否成功升级到 8.8.1 版本以及节点的角色是否正常
GET _cat/nodes?v&h=name,version,roles

4. 升级后验证体系

4.1 核心功能验证表

测试类别测试方法预期结果通过标准
数据完整性随机采样文档对比哈希值哈希值完全匹配100%匹配
搜索相关性相同查询对比7.x/8.x结果前10结果重合≥90%≥95%重合
写入性能批量写入压力测试吞吐量差异≤15%≤10%差异
安全认证多角色权限验证权限控制精确生效无越权访问

4.2 性能基准对比

测试场景7.17 性能指标8.8 性能指标变化率
日志写入吞吐12万条/秒14万条/秒+16%↑
复杂聚合查询2.3秒1.8秒-22%↓
冷数据存储成本$0.023/GB/月$0.018/GB/月-22%↓
安全握手延迟320ms180ms-44%↓

5. 回退方案设计

5.1 快速回退流程

触发回退
停止新数据写入
恢复7.x集群快照
验证数据完整性
切换流量到7.x
清理8.x节点

5.2 回退检查清单

    1. 确认快照版本与7.x集群版本一致
    1. 关闭8.x集群安全认证功能
    1. 清除8.x特定索引模板
    1. 回滚JDK到11版本

6. 常见问题解决方案

6.1 典型问题处理矩阵

问题现象根本原因解决方案紧急程度
节点无法加入集群TLS配置不一致同步安全证书到所有节点⭐⭐⭐⭐⭐
聚合查询返回空结果字段类型不兼容重建索引并更新映射⭐⭐⭐⭐
Kibana仪表板加载失败插件版本不匹配升级Kibana到8.x配套版本⭐⭐⭐
分词器报错停用词列表格式变更调整分词器配置文件⭐⭐

6.2 关键日志分析

# 典型错误日志1:证书不兼容
[WARN][o.e.x.s.t.n.SecurityNetty4Transport] SSL/TLS connection error: handshake_failure# 解决方案:
使用elasticsearch-certutil重新生成统一CA证书# 典型错误日志2:字段类型冲突
java.lang.IllegalArgumentException: field [price] of type [scaled_float] conflicts with existing type [double]# 解决方案:
创建新索引并指定正确字段类型,使用reindex API迁移数据

  • 附录:迁移工具包
工具类别推荐工具使用场景
数据迁移Elasticsearch Reindex API索引结构更新
配置检查ES Upgrade Assistant预检兼容性问题
性能对比Rally基准测试工具版本性能对比
安全迁移Elastic Certutil证书管理

关键注意事项

  1. 必须先在测试环境验证业务场景
  2. 生产环境升级需选择业务低峰期
  3. 保留至少7天的旧版本快照
  4. 监控系统需提前适配8.x指标格式
  • **注:实际升级耗时与数据规模成正比,每TB数据预计需要2-4小时迁移时间**
    es - head 是一个 Elasticsearch 的可视化管理插件,它本身并不定义查询参数,而是允许用户使用 Elasticsearch 的各种查询参数来执行搜索操作。以下为你详细介绍 Elasticsearch 中常见的查询参数及其含义:

彩蛋!!!

Elasticsearch 常用结构化查询参数

  • match 查询。全文搜索查询,会对查询文本进行分词处理,然后在指定字段中查找匹配的分词。
  • term 查询。精确匹配查询,不会对查询词进行分词处理,直接查找字段中包含确切值的文档。
  • prefix 查询。查找字段中以指定前缀开头的文档。

  • wildcard 查询。支持使用通配符 *(匹配任意数量的任意字符)和 ?(匹配单个任意字符)进行模糊匹配。
  • range 查询。查找字段值在指定范围内的文档,支持 gt(大于)、gte(大于等于)、lt(小于)、lte(小于等于)操作符。
  • bool 查询。用于组合多个查询条件,可使用 must(必须匹配)、must_not(必须不匹配)、should(可以匹配,匹配越多得分越高)和 filter(过滤文档,不影响得分)子句。

  • _source 参数。控制返回文档中包含的字段,可以指定包含或排除某些字段。
  • explain 参数。当设置为 true 时,会在返回结果中包含每个匹配文档的得分解释信息,帮助理解文档得分的计算方式。
  • timeout 参数。指定查询的超时时间,若查询在指定时间内未完成,将返回已找到的部分结果。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[免费]直接整篇翻译pdf工具-支持多种语言

<闲来没事写篇博客填补中文知识库漏洞> 如题&#xff0c;[免费][本地]工具基于开源仓库&#xff1a; 工具 是python&#xff01;太好了&#xff0c;所以各个平台都可以&#xff0c;我这里基于windows. 1. 先把github代码下载下来&#xff1a; git clone https://githu…

MYSQL8.0数据库误删除记录恢复 MYSQL8.0数据库崩溃恢复 MYSQL8.0数据库删除表恢复

数据类型 MYSQL 8.0 数据大小 242 MB 故障检测 主机断电导致数据库崩溃,无法启动. 修复结果 收到文件后,修正不一致的地方&#xff0c;成功启动MYSQL 8.0 完成恢复 客户验收数据成功。 完成恢复。最新数据得以恢复. 客户非常满意。 友情提醒&#xff1a;重要数据一定要勤备份&…

Git下载安装(保姆教程)

目录 1、Git下载 2、Git安装&#xff08;windows版&#xff09; &#xff08;1&#xff09;启动安装程序 &#xff08;2&#xff09;阅读许可协议 &#xff08;3&#xff09;选择安装路径 &#xff08;4&#xff09;选择组件 &#xff08;5&#xff09;选择开始菜单文件夹…

Dynamics 365 启用用户安全角色变更的审核功能

D365自身的审核功能这里就不说了&#xff0c;是一个很古老的功能&#xff0c;用过D365的人应该都知道&#xff0c;今天要说的是用户安全角色变更的审核记录。 很多人用系统的审核功能&#xff0c;更多的是用来追踪用户的登录记录&#xff0c;或者记录的修改记录。 而实际的项目…

spring boot3 kafka集群搭建到使用

首先自行安装docker&#xff0c;通过docker容器安装kafka CentOS 系统 docker安装地址 1.pom.xml和application.properties或者application.yml文件配置 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</arti…

docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)

文章目录 前言第一部分&#xff1a;镜像获取&#x1f680; 方式一&#xff1a;切换国内下载镜像✅1. 下载anythingllm✅ 2. 下载open-webui &#x1f680;方式二&#xff1a;下载我分享的百度云✅ anythingllm压缩包百度云链接❎ open-webui压缩包 第二部分&#xff1a;下载之后…

【VBA】excel获取股票实时行情(历史数据,基金数据下载)

文章目录 0. 效果展示与获取其它相关内容&#xff1a; 1. Excel VBA 自动化与对象模型2. HTTP 请求与 API 数据获取3. JSON 数据解析与字符串处理4. 自动任务调度与实时刷新5. 错误处理与健壮性设计 0. 效果展示与获取 作品&#xff1a;https://mbd.pub/o/bread/aJaUmplq 需要…

docker的使用

时间&#xff1a;2025.3.17 一、当我们想要运行一个容器时&#xff0c;不是在containers处&#xff0c;而是需要在images处找对应容器的镜像 操作步骤&#xff1a; 1.找容器镜像 2.找到容器镜像&#xff0c;通过pull下载到当前主机中 3.下载成功后进行运行 4.运行时的容器镜像…

本地部署deepseek-r1建立向量知识库和知识库检索实践【代码】

目录 一、本地部署DS 二、建立本地知识库 1.安装python和必要的库 2.设置主目录工作区 3.编写文档解析脚本 4.构建向量数据库 三、基于DS,使用本地知识库检索 本地部署DS,其实非常简单,我写了一篇操作记录,我终于本地部署了DeepSeek-R1(图文全过程)-CSDN博客 安装…

Matlab 汽车传动系统的振动特性分析

1、内容简介 Matlab 186-汽车传动系统的振动特性分析 可以交流、咨询、答疑 2、内容说明 略 摘要&#xff1a;汽车动力传动系统是一个具有多自由度的、连续的、有阻尼系统。传动系统的振动主要有横向振动、扭转振动、纵向振动。并且汽车传动系统的扭转振动是一个非常重要的振…

【C++】树和二叉树的实现(上)

本篇博客给大家带来的是用C语言来实现数据结构树和二叉树的实现&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;数据结构 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff…

k8s环境部署

四台机器 分别是 k8s-master&#xff1a;172.25.254.100 k8s-node1&#xff1a;172.25.254.10 k8s-node2&#xff1a;172.25.254.20 docker-harbor&#xff1a;172.25.254.200 reg.timinglee.org 四台机器分别配置好网络和软件仓库 做好地址解析 scp -r /etc/hosts/ root17…

transformer bert 多头自注意力

输入的&#xff08;a1,a2,a3,a4&#xff09;是最终嵌入&#xff0c;是一个(512,768)的矩阵&#xff1b;而a1是一个token&#xff0c;尺寸是768 a1通过Wq权重矩阵&#xff0c;经过全连接变换得到查询向量q1&#xff1b;a2通过Wk权重矩阵得到键向量k2&#xff1b;q和k点乘就是值…

它,让机器人与HMI屏无缝对接

随着工业自动化向智能化发展&#xff0c;机器人与HMI屏的通信变得至关重要。本文将为您介绍一款创新的解决方案&#xff0c;它打破了通信协议的壁垒&#xff0c;实现机器人与HMI屏的无缝连接。 随着工业自动化向智能化的迈进&#xff0c;生产制造业正加速引入大量工业机器人以替…

MySQL 锁

MySQL中最常见的锁有全局锁、表锁、行锁。 全局锁 全局锁用于锁住当前库中的所有实例&#xff0c;也就是说会将所有的表都锁住。一般用于做数据库备份的时候就需要添加全局锁&#xff0c;数据库备份的时候是一个表一个表备份&#xff0c;如果没有加锁的话在备份的时候会有其他的…

win10 c++ VsCode 配置PCL open3d并显示

win10 c VsCode配置PCL open3d并显示 一、效果图二、配置步骤2.1 安装vscode2.2 pcl-open3d配置2.3 vscode中设置 三、测试代码四、注意事项及后续 一、效果图 二、配置步骤 2.1 安装vscode vscode下载链接 下载中文插件、c相关插件 2.2 pcl-open3d配置 1&#xff09;下载…

Python----计算机视觉处理(Opencv:图像颜色替换)

一、开运算 开运算就是对图像先进行腐蚀操作&#xff0c; 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点&#xff0c;并分离相连的物体。 其主要目的就是消除那些小白点 在开运算组件中&#xff0c;有一个叫做kernel的参数&#xff0c;指的是核的大小&#xff0c;通常…

泰勒·斯威夫特(Taylor Swift)的音乐影响力与商业版图深度研究

泰勒斯威夫特的音乐影响力与商业版图深度研究 简介 泰勒斯威夫特&#xff08;Taylor Swift&#xff09;是当今流行音乐领域最具影响力的全球巨星之一。自少年时期出道以来&#xff0c;她在音乐风格、形象和商业战略上不断演变&#xff0c;从乡村音乐新人成长为引领流行文化的…

完全托管的DeepSeek-R1模型正式登陆Amazon Bedrock:安全部署与使用指南

文章目录 摘要一、核心优势&#xff1a;完全托管与企业级安全二、部署注意事项三、实践指南&#xff1a;从接入到调用四、支持区域与定价五、结语 摘要 DeepSeek-R1模型已在Amazon Bedrock平台正式上线&#xff0c;支持通过Bedrock Marketplace和自定义模型导入功能调用。 该模…

Matlab 汽车ABS实现模糊pid和pid控制

1、内容简介 Matlab 181-汽车ABS实现模糊pid和pid控制 可以交流、咨询、答疑 2、内容说明 略 实现汽车防抱死制动系统&#xff08;ABS&#xff09;的控制算法&#xff0c;通常涉及到传统的PID控制和模糊PID控制两种方法。下面将分别介绍这两种控制策略的基本概念以及如何在M…