当前位置: 首页 > news >正文

SpringBoot RestHighLevelClient 按版本更新

SpringBoot RestHighLevelClient 按版本更新

  • 1 查询
  • 2 更新

RestHighLevelClient 是 Elasticsearch 提供的一个用于与 Elasticsearch 集群交互的高级 REST 客户端。它是基于 Java 的客户端,旨在提供一种简单且功能丰富的方式来执行各种 Elasticsearch 操作,包括索引、搜索、更新和删除文档,以及管理索引和集群。

主要特点解释
高级 API提供了一组高级 API,简化了与 Elasticsearch 交互的复杂性。
线程安全设计为线程安全,可以在多线程环境中使用。
轻松配置可以通过简单的配置连接到 Elasticsearch 集群。
支持所有 Elasticsearch 功能几乎支持所有 Elasticsearch 提供的功能,包括文档操作、搜索、聚合、索引管理、集群管理等。
同步和异步操作支持同步和异步两种操作方式,满足不同的使用场景。
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.13.4</version>
</dependency>

1 查询

import lombok.extern.slf4j.Slf4j;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.jeecg.modules.demo.cate.entity.CateRule;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class NewTest {@Autowiredprivate ObjectMapper objectMapper;@Autowiredprivate RestHighLevelClient client;@Testpublic void test() {search("student_test", "1", CateRule.class);}/*** 查询** @param index 索引* @param id    ID* @param cls   类* @param <T>   类* @return 类*/private <T> T search(String index, String id, Class<T> cls) {try {GetRequest get = new GetRequest(index, id);GetResponse response = client.get(get, RequestOptions.DEFAULT);if (response.isExists()) {return objectMapper.readValue(response.getSourceAsString(), cls);} else {return null;}} catch (Exception e) {log.error("查询失败!", e);}return null;}}

2 更新

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.document.Document;
import org.springframework.test.context.junit4.SpringRunner;import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.rest.RestStatus;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class NewTest {@Autowiredprivate RestHighLevelClient client;@Testpublic void test() {forceUpdate(Document.create(), "student_test", "1");}/*** 按版本更新** @param doc   Document* @param index 索引* @param id    ID* @return 结果*/private boolean forceUpdate(Document doc, String index, String id) {try {// 查询GetRequest get = new GetRequest(index, id);GetResponse rep1 = client.get(get, RequestOptions.DEFAULT);if (!rep1.isExists()) {return false;}long seqNo = rep1.getSeqNo();long primaryTerm = rep1.getPrimaryTerm();// 更新UpdateRequest update = new UpdateRequest(index, id).doc(doc.toJson(), XContentType.JSON).setIfSeqNo(seqNo).setIfPrimaryTerm(primaryTerm);UpdateResponse rep2 = client.update(update, RequestOptions.DEFAULT);if (rep2.status() == RestStatus.OK) {return true;}} catch (Exception e) {log.error("更新失败!", e);}return false;}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 自动驾驶AVM环视算法–全景和标定全功能算法实现和exe测试demo
  • vscode配置latex环境制作【文档、简历、resume】
  • Chapter16 渲染优化技术——Shader入门精要学习笔记
  • 企业培训 | CATIA数字样机培训
  • 为什么Spring不推荐@Autowired用于字段注入
  • Facebook Dating:社交平台的约会新体验
  • 专业140+总分420+天津大学815信号与系统考研经验天大电子信息与通信工程,真题,大纲,参考书。
  • docker部署Guacamole手册
  • SpringBoot应用从jar包部署改为war包部署要做哪些修改
  • SpringCloud---服务注册(Eureka)
  • Ubuntu 24.04 LTS 桌面安装MT4或MT5 (MetaTrader)教程
  • JAVA的接口和实现类
  • Power Shell查看进程、排序、打印出前五
  • 【软考】UML中的关联关系
  • 低功率范围内的MOSFET表征
  • JavaScript 如何正确处理 Unicode 编码问题!
  • (三)从jvm层面了解线程的启动和停止
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Mysql数据库的条件查询语句
  • React as a UI Runtime(五、列表)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQLServer之创建数据库快照
  • Vim 折腾记
  • 彻底搞懂浏览器Event-loop
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 近期前端发展计划
  • 排序算法之--选择排序
  • 一道面试题引发的“血案”
  • 一起参Ember.js讨论、问答社区。
  • 智能合约Solidity教程-事件和日志(一)
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​Linux·i2c驱动架构​
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (14)Hive调优——合并小文件
  • (2022 CVPR) Unbiased Teacher v2
  • (3)nginx 配置(nginx.conf)
  • (7)svelte 教程: Props(属性)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++17) optional的使用
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (回溯) LeetCode 40. 组合总和II
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (原创)可支持最大高度的NestedScrollView
  • (转)Unity3DUnity3D在android下调试
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET6 命令行启动及发布单个Exe文件
  • .net6Api后台+uniapp导出Excel
  • .NET业务框架的构建
  • ::什么意思