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

029 elasticsearch文档管理(ElasticsearchRepository、ElasticsearchRestTemplate)

文章目录

    • BlogRepository.java
    • BlogRepositoryTest.java
    • BulkTest.java

文档的管理
ElasticSearchRepository接口
使用方法:
创建一个接口,继承于ElasticSearchRepository,指定使用的Entity类及对应主键数据类型
Springboot自动扫描接口并创建代理对象

  1. 新增、更新数据
    使用repository的save方法实现
  2. 删除数据
    deleteById
    deleteAll
  3. 查询数据
    可以使用repository自带的查询方法
    findById
    findAll
    可以自定义查询方法
    findBy{Title}And{content}(String title, String content);
    按照命名规则定义方法,就可以实现相应的查询

BlogRepository.java

package com.xd.cubemall.search.repository;import com.xd.cubemall.search.model.Blog;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import java.util.List;public interface BlogRepository extends ElasticsearchRepository<Blog, Long> {List<Blog> findByTitle(String title);List<Blog> findByTitleAndContent(String title, String content);
}

BlogRepositoryTest.java

package com.xd.cubemall.sdes;import com.xd.cubemall.search.CubemallSearchApplication;
import com.xd.cubemall.search.model.Blog;
import com.xd.cubemall.search.repository.BlogRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.PageRequest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.Optional;@RunWith(SpringRunner.class)
@SpringBootTest(classes = CubemallSearchApplication.class)
public class BlogRepositoryTest {@Autowiredprivate BlogRepository blogRepository;@Testpublic void addDocument() {Blog blog = new Blog();for (int i = 0; i < 50; i++) {blog.setId((long) (i+1));blog.setTitle("测试文档"+(i+1));blog.setContent("测试文档的内容"+(i+1));blog.setComment("注释内容");blog.setMobile("111111");blogRepository.save(blog);}}@Testpublic void updateDocument() {Optional<Blog> optional = blogRepository.findById(1l);if (optional.isPresent()) {Blog blog = optional.get();blog.setTitle("hello world");blogRepository.save(blog);}}@Testpublic void deleteDocument() {blogRepository.deleteById(1l);}@Testpublic void getById() {
//        Optional<Blog> optional = blogRepository.findById(1l);
//        Blog blog = optional.get();
//        System.out.println(blog);Iterable<Blog> all = blogRepository.findAll(PageRequest.of(1,10));all.forEach(b-> System.out.println(b));}@Testpublic void testFindByTitle() {List<Blog> list = blogRepository.findByTitle("测试");//termlist.stream().forEach(System.out::println);}@Testpublic void testFindByTitleAndContent() {List<Blog> list = blogRepository.findByTitleAndContent("37", "内容");list.forEach(e-> System.out.println(e));}}

BulkTest.java

package com.xd.cubemall.sdes;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xd.cubemall.search.CubemallSearchApplication;
import com.xd.cubemall.search.model.Blog;
import com.xd.cubemall.search.repository.BlogRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.stream.Collectors;@RunWith(SpringRunner.class)
@SpringBootTest(classes = CubemallSearchApplication.class)
public class BulkTest {@Autowiredprivate ElasticsearchRestTemplate template;@Autowiredprivate BlogRepository blogRepository;@Testpublic void bulkBlog() {JSONArray jsonArray = JSON.parseArray("");List<IndexQuery> list = jsonArray.stream().map(json -> {IndexQuery query = new IndexQuery();query.setId(((JSONObject) json).getString("id"));query.setSource(((JSONObject) json).toJSONString());return query;}).collect(Collectors.toList());template.bulkIndex(list, IndexCoordinates.of("blog_1"));}@Testpublic void saveAllBlog() {JSONArray jsonArray = JSON.parseArray("");List<Blog> list = jsonArray.stream().map(json -> {JSONObject jsonObject = ((JSONObject) json);Blog blog = jsonObject.toJavaObject(Blog.class);return blog;}).collect(Collectors.toList());blogRepository.saveAll(list);}}

相关文章:

029 elasticsearch文档管理(ElasticsearchRepository、ElasticsearchRestTemplate)

文章目录 BlogRepository.javaBlogRepositoryTest.javaBulkTest.java 文档的管理 ElasticSearchRepository接口 使用方法&#xff1a; 创建一个接口&#xff0c;继承于ElasticSearchRepository&#xff0c;指定使用的Entity类及对应主键数据类型 Springboot自动扫描接口并创建代…...

【Flutter】Dart:Isolate

在 Dart 和 Flutter 中&#xff0c;所有的代码默认都运行在单一的线程&#xff08;即主线程&#xff09;上&#xff0c;这个线程也叫做 UI 线程。当进行耗时操作&#xff08;如复杂计算或网络请求&#xff09;时&#xff0c;如果不使用多线程处理&#xff0c;主线程会被阻塞&am…...

​微信小程序 页面间传递数据

在小程序中&#xff0c;给页面传递参数通常有以下几种方法&#xff1a; 通过URL传递参数&#xff1a; 在小程序中&#xff0c;可以在页面的路径后面添加参数&#xff0c;然后在页面的 onLoad 函数中获取这些参数。 // 在app.json中配置页面路径 "pages": [{"pat…...

前端_005_Nodejs

文章目录 npm包管理器cjs和mjsYarn包管理器 1.Node.js 是js的一个运行环境&#xff0c;从nodejs诞生后js代码不局限于只在浏览器中执行&#xff0c;此外还能再nodejs里写服务端&#xff0c;用js可以前后端全栈开发 2.Node.js不跟浏览器一样默认含有document,window对象&#xf…...

SpringCache缓存介绍

1.为什么需要缓存 ​ 前台请求&#xff0c;后台先从缓存中取数据&#xff0c;取到直接返回结果&#xff0c;取不到时从数据库中取&#xff0c;数据库取到更新缓存&#xff0c;并返回结果&#xff0c;数据库也没取到&#xff0c;那直接返回空结果&#xff1a; 使用缓存是一个很…...

python实战(一)——iris鸢尾花数据集分类

一、任务背景 本文是python实战系列专栏的第一篇文章&#xff0c;我们将从分类开始由浅入深逐步学习如何使用python完成常规的机器学习/深度学习任务。iris数据集是经典的机器学习入门数据集&#xff0c;许多分类任务教程都会以这个数据集作为示例&#xff0c;它的数据量是150条…...

k8s-对命名空间资源配额

对k8s命名空间限制的方法有很多种&#xff0c;今天来演示一下很常用的一种 用的k8s对象就是ResourceQuota 一&#xff1a;创建命名空间 kubectl create ns test #namespace命名空间可以简写成ns 二&#xff1a; 对命名空间进行限制 创建resourcequota vim resourcequ…...

Failed to connect to github.com port 443

git push无法连接443端口 **问题1****方法一&#xff1a;取消代理设置**git命令 其他解决方案1. **设置 Git 使用 HTTP 而不是 HTTPS**2. **检查证书**3. **配置 Git 忽略 SSL 验证&#xff08;不推荐&#xff09;**4. **检查代理设置** 问题1 Failed to connect to github.com…...

【设计模式系列】简单工厂模式

一、什么是简单工厂模式 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种设计模式&#xff0c;其中包含一个工厂类&#xff0c;根据传入的参数不同&#xff0c;返回不同类的实例。这个工厂类封装了对象的创建逻辑&#xff0c;使得客户端代码可以从直接创建…...

给定一个正整数n随机生成n个字节即生成2n个十六进制数将其组成字符串返回secrets.token_hex(n)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 给定一个正整数n 随机生成n个字节 即生成2n个十六进制数 将其组成字符串返回 secrets.token_hex(n) [太阳]选择题 根据题目代码&#xff0c;执行的结果错误的是&#xff1f; import secrets …...

[Gtk] 工程

MediaPlayer 可执行文件工程 结构 . ├── BUILD ├── ButtonHelper.cpp ├── ButtonHelper.h ├── CMakeLists.txt ├── DrawingAreaHelper.cpp ├── DrawingAreaHelper.h ├── layout.ui └── main.cpp CMakeLists.txt # 1) cmake basic cmake_minimum_r…...

基于Multisim的汽车尾灯控制电路设计与仿真

假设汽车尾部左右量测各有3个指示灯&#xff08;用发光二极管模拟&#xff09;1. 汽车正常运行时指示灯全灭&#xff1b;2.右转弯时&#xff0c;右侧3个指示灯按右循环顺序点亮&#xff1b;.3. 左转弯时&#xff0c;左侧3个指示灯按左循环顺序点亮&#xff1b;4.临时刹车时所有…...

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing 1. 解题思路2. 代码实现 题目链接&#xff1a;3326. Minimum Division Operations to Make Array Non Decreasing 1. 解题思路 这一题的话就是要看出来题中给出的operation的本质事实上就是将任意…...

redo文件误删除后通过逻辑备份进行恢复

问题描述 开发同事让在一个服务器上查找下先前库的备份文件是否存在&#xff0c;如果存在进行下恢复。翻了服务器发现备份文件存在&#xff0c;多愁了一眼竟翻到了该备份文件于2024.6.17日恢复过的日志&#xff0c;赶紧和开发沟通说2024.6.17号已经恢复过了为啥还要恢复&#x…...

7805的输出电压如何调整?

7805稳压集成电路的输出电压通常是固定的&#xff0c;标称为5V。然而&#xff0c;在实际应用中&#xff0c;可以通过一些方法调整其输出电压&#xff0c;尽管这些调整方法可能会使电路变得更加复杂或需要额外的元件。以下是几种可能的调整方法&#xff1a; 1. 使用不同型号的稳…...

git命令使用一览【自用】

git常见操作&#xff1a; git initgit remote add master【分支名字】 gitgits.xxxxx【仓库中获取的ssh链接或者http协议的链接】检查远程仓库是否链接成功。 git remote -v出现以下画面就可以git pull,git push了...

MES系列-报表和分析

MES系列-报表和分析 MES系列文章目录 ISA-95制造业中企业和控制系统的集成的国际标准-(1) ISA-95制造业中企业和控制系统的集成的国际标准-(2) ISA-95制造业中企业和控制系统的集成的国际标准-(3) ISA-95制造业中企业和控制系统的集成的国际标准-(4) ISA-95制造业中企业和控制…...

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 &#xff08;一&#xff09;分布式锁&#xff1a;应对分布式环境的同步挑战 &#xff08;二&#xff09;分布式锁的实现方式 &#xff08;三&#xff09;分布式锁的使用场景 &#xff08;四&#xff09;分布式锁需满足的特点 二、Redis 实现分…...

Vue基础(4)

自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。在vue中使用directive来创建自定义指令 钩子函数 指令定义函数提供了几个钩子函数&#xff08;可选&#xff09;&#xff1a; bind: 只调用一次&#xff0c;指令第一次绑定到元素时调用&…...

Redis高阶篇之Redis单线程与多线程

文章目录 0 前言1. 为什么Redis是单线程&#xff1f;1.1 Redis单线程1.2 为什么Redis3时代单线程快的原因1.3 使用单线程原因 2.为什么逐渐加入多线程呢&#xff1f;2.1 如何解决 3.redis6/7的多线程特性和IO多路复用入门3.1主线程和IO线程怎么协作完成请求处理的3.2 Unix网络编…...

【C++】STL——priority_queue优先级队列

目录 前言priority_queue的使用简单使用在OJ中的使用 priority_queue的模拟实现基本功能仿函数在这里插入图片描述 前言 上一节我们说了stack和queue这两种容器适配器&#xff0c;而priority_queue&#xff08;优先级队列&#xff09;同样也是属于容器适配器&#xff0c;它会优…...

大数据新视界 --大数据大厂之大数据在智慧城市建设中的应用:打造智能生活的基石

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

使用枚举来实现策略模式

使用很多if else的场景 public void save(String type,Object data){if("db".equals(type)){saveInDb(data);}else if("file".equals(type)){saveInFile(data);}else if("oss".equals(type)){saveInOss(data);}}使用枚举来解决 public enum Save…...

区块链技术原理

1. 引言 区块链的定义 区块链是一种分布式账本技术&#xff08;Distributed Ledger Technology&#xff0c;DLT&#xff09;&#xff0c;其核心特征是通过密码学的方式将数据打包成一个个区块&#xff0c;按时间顺序依次相连&#xff0c;形成一个不可篡改、公开透明的链式数据…...

Spring Boot 接口数据加解密

今天聊下接口安全问题&#xff0c;涉及到接口的加密和解密 经常和外部单位接口调用梳理了相关技术方案&#xff0c;主要的需求点如下&#xff1a; 1&#xff0c;尽量少改动&#xff0c;不影响之前的业务逻辑 2&#xff0c;考虑到时间紧迫性&#xff0c;可采用对称性加密方式&…...

2018年计算机网络408真题解析

第一题&#xff1a; 解析&#xff1a;TCP/IP体系结构应用层常用协议及其相应的运输层协议 TCP协议是面向连接可靠数据传输服务&#xff0c;UDP无连接不可靠的数据传输服务&#xff0c;IP无连接不可靠的数据连接服务。 FTP协议&#xff0c;SMTP协议和HTTP协议使用TCP协议提供的面…...

Javascript 脚本查找B站限时免费番剧

目录 前言 脚本编写 脚本 前言 B站的一些番剧时不时会“限时免费”&#xff0c;白嫖党最爱&#xff0c;主打一个又占到便宜的快乐。但是在番剧索引里却没有搜索选项可以直接检索“限时免费”的番剧&#xff0c;只能自己一页一页的翻去查看&#xff0c;非常麻烦。 自己找限…...

YoloV10改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发

摘要 在目标检测领域,YoloV10以其高效和准确的性能而闻名。然而,为了进一步提升其检测能力,我们引入了DeBiFormer作为YoloV10的主干网络。这个主干网络的计算量比较大,不过,上篇双级路由注意力的论文受到很大的关注,所以我也将这篇论文中的主干网络用来改进YoloV10,卡多…...

C#学习笔记(一)

C#学习笔记&#xff08;一&#xff09; 简介第一章 上位机开发环境之 VS 使用和.NET 平台基础一、安装软件二、创建项目三、第一个Hello world四、解决方案与项目五、Debug 和 Release 的区别六、代码的生产过程七、CLR的其它功能 简介 C# .NET工控上位机开发 在工控领域&…...

MATLAB边缘检测

一、目的&#xff1a; 熟悉边缘检测原理&#xff0c;并运用matlab软件实现图像的canny边缘检测&#xff0c;体会canny边缘检测的优缺点。 二、内容&#xff1a; 编写matlab程序&#xff0c;实现对lena图像的边缘检测&#xff0c;输出程序运行结果。 三、原理或步骤&#x…...