Java操作 elasticsearch 8.1,如何实现索引的重建?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

Java 操作 elasticsearch 8.1 实现 索引的重建 并且切换到新的别名 不要用elasticsearch-rest-high-level-client

如上问题有来自我自身项目开发,有的收集网站,有的来自读者,如有侵权,立马删除。

解决方案

  如下是上述问题的解决方案,仅供参考:


  在Java中操作Elasticsearch 8.1版本实现索引的重建并切换到新的别名,可以通过使用Elasticsearch的低级客户端(Low-Level REST Client)来完成。以下是实现这一过程的基本步骤:

  1. 创建新的索引:首先,你需要定义新的索引的映射(Mappings)和设置(Settings),并使用低级客户端创建这个索引。

  2. 索引数据:将数据索引到新的索引中。这可以通过批量请求(Bulk Request)来完成,以提高性能。

  3. 等待索引刷新:确保所有文档都被索引并且可见。

  4. 更新别名:一旦新索引中的数据准备就绪,你可以更新别名以指向新索引。

以下是使用Elasticsearch低级客户端实现索引重建的示例代码:

import org.elasticsearch.client.Request;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;import java.io.IOException;
import java.util.Map;public class ElasticsearchIndexRebuild {private static final String HOST = "localhost";private static final int PORT = 9200;private static final String INDEX_NAME = "your_index";private static final String NEW_INDEX_NAME = "your_index_new";private static final String ALIAS_NAME = "your_alias";public static void main(String[] args) throws IOException {RestClient restClient = RestClient.builder(HOST, PORT).build();// Step 1: Create the new index with the desired mappings and settingsString mappingsAndSettings = "{\n" +"  mappings: {\n" +"    properties: {\n" +"      title: { type: text },\n" +"      date: { type: date }\n" +"    }\n" +"  }\n" +"}";Request createIndexRequest = new Request("PUT", "/" + NEW_INDEX_NAME);createIndexRequest.setJsonEntity(mappingsAndSettings);restClient.performRequest(createIndexRequest);// Step 2: Index data into the new index (this is just an example, you would use your data)// ...// Step 3: Wait for the index to be ready (not shown here)// Step 4: Update the alias to point to the new indexRequest updateAliasRequest = new Request("POST", "/_aliases");updateAliasRequest.setJsonEntity("{\n" +"  actions: [\n" +"    { add: { index: \"" + NEW_INDEX_NAME + "\", alias: \"" + ALIAS_NAME + "\" }},\n" +"    { remove: { index: \"" + INDEX_NAME + "\", alias: \"" + ALIAS_NAME + "\" }}\n" +"  ]\n" +"}");restClient.performRequest(updateAliasRequest);// Close the clientrestClient.close();}
}

  请注意,这里的代码只是一个示例,你需要根据自己的需求来调整索引的映射和设置,以及索引数据的具体逻辑。

  在执行别名更新时,我使用了批量操作(actions),它允许你在单个请求中添加和删除别名。这样,当别名切换完成后,旧的索引将不再通过别名可访问。

  在进行索引重建和别名切换时,请确保你的应用程序能够处理可能的停机时间,或者使用零停机时间的策略,如使用版本化别名或读写分离。

  此外,对于生产环境,建议在执行这些操作之前进行充分的测试,并确保有完整的数据备份。

  希望能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏「Bug调优」,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 20w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。


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

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

相关文章

U盘无法正常格式化?教你一个强力的办法

前言 电脑格式化U盘或者移动硬盘的操作,相信各位小伙伴都是有一定经历的。 如果设备正常,那么进入到【此电脑】,在对应的分区点击【鼠标右键】-【格式化】就可以把对应的存储设备恢复到初始状态。 但凡事都会有例外,比如在格式化…

【openLooKeng-1.10.0集群环境安装部署】

openLooKeng-1.10.0集群环境安装部署 一、摘要二、正文1. 环境说明2. 集群拓扑图3. 安装过程(以root用户安装)3.1 在Coordinator和Worker两个节点都需要安装jdk1.8+3.2 在Coordinator上安装配置openLooKeng3.3 在Worker节点上进行配置openLooKeng3.4 在Coordinator节点上先启…

施耐德EOCR-2CT-300/5电流互感器 50HZ 5VA

EOCR主要产品有电子式电动机保护继电器,电子式过电流继电器,电子式欠电流继电器,电子式欠电压继电器,其它保护和监视装置,电流互感器。 施耐德EOCR-2CT-300/5电流互感器 EOCR-2CT系列型号: EOCR 2CT 100…

本地安装mysql并用python访问它

数据还是放在数据库中比较好,于是决定在本机安装个mysql服务。 环境:windows 10,python3.8.10 安装前首先要注意一点: 设置-系统-关于-设备(电脑)名称:为英文 一、进入mysql官网下载GPL免费版…

C++概念、头文件与c区别、变量、const关键字以及enum枚举

C概念 C最主要的就是:C是面向对象的编程思想,而C是面向过程的编程思想。C编写出来的效率比其他语言高的多。 C思想:万物皆对象 C语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。首先,C的确是一…

SNETCracker--超级弱口令检查工具简介

一、简介 SNETCracker 超级弱口令检查工具是一款Windows平台的弱口令审计工具,支持批量多线程检查,可快速发现弱密码、弱口令账号,密码支持和用户名结合进行检查,大大提高成功率,支持自定义服务端口和字典。 二、SNE…

Java集成结巴中文分词器、Springboot项目整合jieba分词,实现语句最精确的切分、自定义拆词

文章目录 一、jieba介绍二、集成三、原理四、自定义拆词4.1、方式一:在源码的dict.txt中修改然后重新打包(推荐)4.2、新建文件自定义拆词 五、其他问题 一、jieba介绍 jieba是一个分词器,可以实现智能拆词,最早是提供了python包,…

迪拜之行回顾:CESS 的 DePIN 创新之旅

迪拜最近是一个关键热词,成为了一系列 Web3 和加密活动的中心,吸引了行业领导者、创新者和爱好者,探索区块链和去中心化技术的最新发展。从 4 月中旬,一系列行业会议和活动陆续举行,吸引了一众与会者。然而暴雨积水又成…

2023平航杯——手机取证复现

手机最近连接的wifi"只有红茶可以吗"的密码是?【标准格式:ABCabc123!#】 手机上安装了某个运动软件,它的包名是?【标准格式:com.baidu.gpt】 com.dizhisoft.changdongli 该运动软件中最近一次运动记录的起点…

NodeJS操作符空格漏洞

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它使得 JavaScript 可以脱离浏览器在服务器端运行。Node.js 利用事件驱动、非阻塞 I/O 模型等技术提高了性能,从而在开发领域得到广泛应用,比如Web服务应用(尤其是非阻塞…

Python+Appium实现自动化测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、环境准备 1.脚本语言:Python3.x IDE&#x…

Yolov5 export.py实现onnx模型的导出

查了很多资料,很多用python代码写的,只需要这个库那个库的,最后都没成功。 不如直接使用Yolov5里面的 export.py实现模型的转换。 一:安装依赖 因为yolov5里面的requirments.txt是将这些转换模型的都注释掉了 所以需要解除注释…

SAP如何批量标记生产订单的TECO状态

声明:本文仅代表作者观点和立场,不代表任何公司!仅用于SAP软件应用学习参考。 SAP/ERP系统生产订单完工后,在进行结算之前,需要进行技术性完成操作,即将生产订单批量标记TECO,标记上TECO表示生…

独立站运营教程:站外引流如何做?

在当今全球化的商业环境中,跨境电商已经成为一个蓬勃发展的行业。对于跨境电商独立站来说,站外引流是非常关键的一环,它可以帮助独立站吸引更多潜在客户,提升品牌知名度,促进销售增长。本文将深入探讨如何实现跨境电商…

eNSP学习——静态路由及默认路由基本配置

目录 知识背景 实验目的 实验步骤 实验内容 实验拓扑 实验编址 实验前期准备 实验步骤 1、基本配置(按照实验编址设置好对应的IP地址) 2、是实现主机之间的通信 3、实现全网全通来增强网络的可靠性 4、使用默认路由实现简单的网络优化 需要各…

【静态分析】静态分析笔记07 - 指针分析基础

参考: 【课程笔记】南大软件分析课程7——指针分析基础(课时9/10) - 简书 -------------------------------------------------------------- 1. 指针分析规则 规则:采用推导形式,横线上面是条件,横线下…

MySQL--表的操作

目录 创建表 查看表结构 修改表 新增列 修改列类型 修改列名 修改表名: 删除列 删除表 创建表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引…

【论文阅读】Self-DC:何时检索,何时生成?

对于RAG来说,什么时候利用外部检索,什么时候使用大模型产生已知的知识,以回答当前的问题?这是一个非常有趣的话题。 《Self-DC: When to retrieve and When to generate? Self Divide-and-Conquer for Compositional Unknown Questions》这…

MySQL尾部空格处理与哪些设置有关? 字符集PAD SPACE与NO PAD属性的区别、MySQL字段尾部有空格为什么也能查询出来?

文章目录 一、问题背景二、字符集PAD_ATTRIBUTE属性(补齐属性)2.2、PAD SPACE与NO PAD的具体意义 三、CHAR类型尾部空格的处理四、其他问题4.1、在PAD SPACE属性时如何实现精准查询 五、总结 以下内容基于MySQL8.0进行讲解 一、问题背景 一次查询中发现…

NVIDIA CUDA Toolkit

NVIDIA CUDA Toolkit CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developer CUDA Toolkit是用于CUDA开发的软件包,主要包括CUDA编译器、运行时库、GPU驱动程序和开发工具等。它允许开发者使用通用编程语言(如C、C)来利用NVIDIA GPU进行…