Elasticsearch cannot downgrade a node from version [7.x.x] to version [7.x.x]

2023-10-17 21:40

本文主要是介绍Elasticsearch cannot downgrade a node from version [7.x.x] to version [7.x.x],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 背景和问题分析
      • 1. 最简单方案
      • 2. 复制数据仓库

cannot downgrade a node from version [7.x.x] to version [7.x.x]
Elasticsearch降级实践

背景和问题分析

首先官方是不支持降级的,想要降级必须从快照中恢复,这是最保险的,前提也比较多,成本较高。
但是你做了很小的版本升级,过后又非常想回退到原来的版本,怎么办呢?

注意:我的Elasticsearch是单机模式,集群模式自行研究吧。

以我的操作环境为例:从7.13.4回退到7.11.2。
直接启动7.11.2,报错如下:

cannot downgrade a node from version [7.13.4] to version [7.11.2]

报错原因是启动时会检查,当前服务版本和集群内部状态的版本,源码如下

VSCode中打开该仓库:https://github1s.com/elastic/elasticsearch/blob/HEAD/server/src/main/java/org/elasticsearch/env/NodeMetadata.java

1. 最简单方案

版本做了很小的升级,你也很清楚,降级不会影响业务和程序。
最简单的方法,就是把集群内部状态的版本改下。

集群内部状态是基于lucene的文件系统,修改集群状态,代码如下:

public class Application {static final String NODE_VERSION_KEY = "node_version";//7130499 -> 7110299public static void main(String[] args) {int targetNodeVersion = 7110299;String _state = "/data/elk/elasticsearch-7.11.2/data/nodes/0/_state/";Path path = Paths.get(_state);try (DirectoryReader reader = DirectoryReader.open(new SimpleFSDirectory(path))) {final Map<String, String> userData = reader.getIndexCommit().getUserData();System.out.println(userData.toString());try (IndexWriter indexWriter =createIndexWriter(new SimpleFSDirectory(path), true)) {final Map<String, String> commitData = new HashMap<>(userData);commitData.put(NODE_VERSION_KEY, Integer.toString(targetNodeVersion));indexWriter.setLiveCommitData(commitData.entrySet());indexWriter.commit();}} catch (Exception e) {e.printStackTrace();}}private static IndexWriter createIndexWriter(Directory directory, boolean openExisting) throws IOException {final IndexWriterConfig indexWriterConfig = new IndexWriterConfig(new KeywordAnalyzer());// start empty since we re-write the whole cluster state to ensure it is all using the same format versionindexWriterConfig.setOpenMode(openExisting ? IndexWriterConfig.OpenMode.APPEND : IndexWriterConfig.OpenMode.CREATE);// only commit when specifically instructed, we must not write any intermediate statesindexWriterConfig.setCommitOnClose(false);// most of the data goes into stored fields which are not buffered, so we only really need a tiny bufferindexWriterConfig.setRAMBufferSizeMB(1.0);// merge on the write thread (e.g. while flushing)indexWriterConfig.setMergeScheduler(new SerialMergeScheduler());return new IndexWriter(directory, indexWriterConfig);}
}

2. 复制数据仓库

如果你的数据很少,比如索引、账号、Kibana索引等。重新建设很快,那我建议还是重新建设吧。
如果重建过程非常耗时,成本比较高,并且你有另外一套相同版本的环境,那就好办了。
打包另一个环境的path.data目录,复制到当前环境中,然后重新设置账号信息即可。

# 1. 创建一个管理员账号
bin/elasticsearch-users useradd admin -p 123456 -r superuser# 2. 重置elastic密码
curl --user admin:123456 -XPUT "http://localhost:9200/_security/user/elastic/_password?pretty" -H 'Content-Type: application/json' -d '{"password" : "123456"}'

这篇关于Elasticsearch cannot downgrade a node from version [7.x.x] to version [7.x.x]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/228127

相关文章

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创