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…

零基础HTML教程(28)--meta标签常见用法

文章目录 1. 引子2. 常见用法3. 小结 1. 引子 其实meta还挺好玩,它的意思是超越,元宇宙英文Metaverse,就是meta(超越)universe(宇宙)的结合。 所以美国的facebook把公司名都改为meta了。 但是在网页中,它没这么神,只…

python高级进阶(三)[面向对象]

目录 一、面向对象是什么? 二、面向对象编程主的基本概念 三、类 四、对象 4.1 创建对象的格式为 4.2 添加和获取对象的属性 4.3 在方法内通过self获取对象属性 4.4 __init__方法 说明: 4.5 有参数的__init__方法 说明: 注意&…

融合创新:LangChain、阿里云通义千问与SerpApi搜索的强强联合

随着人工智能技术的飞速发展,各类创新工具不断涌现,旨在为用户提供更高效、精准的信息获取与处理能力。本文将聚焦于三个颇具代表性的技术平台——LangChain、阿里云通义千问与SerpApi搜索,探讨它们各自的特性与优势,并展望它们如何相互融合,共同构建强大的智能解决方案。…

html中字体加粗

在HTML中&#xff0c;你可以使用<b>标签或<strong>标签来使字体加粗。<b>标签用于表示粗体文本&#xff0c;而<strong>标签不仅表示粗体文本&#xff0c;还表示文本的重要性。 例如&#xff1a; 使用<b>标签&#xff1a; <p>这是一个&l…

本地安装mysql并用python访问它

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

Java/Android设计模式学习笔记

Java/Android设计模式学习笔记 1.参考资料 书籍 适合容易集中精力的看,可以私信我拿资源 《Head First设计模式》—已看&#xff0c;推荐 《大话设计模式【Java溢彩加强版】》 – 程杰&#xff0c;2022年 《图解设计模式》 视频 适合不容易集中精力的看 尚硅谷Java设计…

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

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

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

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

web前端练习三

一.随机点名程序 1.点击点名按钮&#xff0c;名字界面随机显示&#xff0c;按钮文字由点名变为停止 2.再次点击点名按钮&#xff0c;显示当前被点名学生姓名&#xff0c;按钮文字由停止变为点名 <!DOCTYPE html> <html lang"en"> <head><meta…

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

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

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

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

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

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

NodeJS操作符空格漏洞

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

Python+Appium实现自动化测试

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

Mac安装flutter环境

好记性不如烂笔头,之前出现文章用的后面再访问就没了,不如自己保存备份一份,哈哈 MAC电脑安装flutter环境 一&#xff0c;获取Flutter SDK 去flutter官网下载其最新可用的安装包 地址&#xff1a;https://flutter.dev/docs/development/tools/sdk/releases?tabmacos#macos …

如何使用Vite创建vue项目中配置别名和扩展名

在vite.config.js中&#xff0c;resolve 用于配置模块解析规则&#xff0c;如设置别名、扩展名等。 import {defineConfig} from vite import vue from vitejs/plugin-vue import path from path;export default defineConfig({resolve: {// 别名配置alias: {// 将 指向根目录…

C++ set、map

文章目录 关联式容器键值对树形结构的关联式容器setset的介绍set的使用 multisetmapmap的介绍map的使用 multimap 关联式容器 CSTL包含了序列式容器和关联式容器&#xff1a; 序列式容器&#xff1a;vector/list/deque关联式容器&#xff1a;set/map等 关联式容器也是用来存…