Spring-Data-ES-template工具类使用

            SpringDataElasticsearch 提供了一个工具类 ElasticsearchTemplate,我们使用该类对象也可以对 ES 进行操作

1.操作索引

首先注入操作ES所需要的工具类(ElasticsearchTemplate)。

@Autowiredprivate ElasticsearchTemplate template;

将createIndex改为false

@Document(indexName = "product",createIndex = false)
@Data
@AllArgsConstructor
public class Product {@Id //标记在成员变量上,标记一个字段为主键,该字段的值会同步到ES该文档的id值//标记在成员变量上,标记为文档中的域,一般有如下属性-> type域的类型,index是否创建索引,store是否单独存储,analyzer分词器,searchAnalyzer搜索分词器@Field(type = FieldType.Integer,store = true,index = true)private Integer id;@Field(type = FieldType.Text,store = true,index = true,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")private String productName;@Field(type = FieldType.Text,store = true,index = true,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")private String productDesc;
}

1.1新增索引(不推荐)

不推荐原因:生成的索引中mappings为空,并不按照指定

@Testpublic void addIndex(){//获取索引操作对象IndexOperations indexOperations = template.indexOps(Product.class);//创建索引indexOperations.create();}

1.2删除索引

@Testpublic void deleteIndex(){//获取索引操作对象IndexOperations indexOperations = template.indexOps(Product.class);//删除索引indexOperations.delete();}

2.操作文档

 2.1新增/修改 文档  

 //新增/修改 文档@Testpublic void addDocument(){Product product = new Product(5, "elasticsearch", "elasticsearch是一款非常好的分词器");template.save(product);}

2.2删除文档

@Testpublic void deleteDocument(){template.delete("5",Product.class);}

2.3查询文档

//根据id查询
@Testpublic void findDocument(){Product product = template.get("1", Product.class);System.out.println(product);}

3.查询文档

templatesearch方法可以查询文档

SearchHits < T > search ( Query query , Class < T > clazz ) :查询文档, query 是查询条件对象, clazz 是结果类型。

3.1简单查询

@Testpublic void findDocuments(){//1.构造查询条件NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchAllQueryAsQuery()).build();//2.查询SearchHits<Product> result = template.search(query, Product.class);//3.处理查询结果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

3.2匹配查询

@Testpublic void findDocuments(){//1.构造查询条件NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchQueryAsQuery("productDesc","手机",null,null)).build();//2.查询SearchHits<Product> result = template.search(query, Product.class);//3.处理查询结果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

4.复杂条件查询

    @Testpublic void findDocuments2(){String productName="三体";String productDesc="小说";//1.构造查询条件NativeQueryBuilder nativeQueryBuilder = new NativeQueryBuilder();//判断是否有查询条件if (productName== null && productDesc== null){//查询所有nativeQueryBuilder.withQuery(Queries.matchAllQueryAsQuery());}else {//构造bool查询BoolQuery.Builder boolQuery = QueryBuilders.bool();if (productName!=null){//构造must条件boolQuery.must(Queries.matchQueryAsQuery("productName",productName,null,null));}if (productDesc!=null){boolQuery.must(Queries.matchQueryAsQuery("productDesc",productDesc,null,null));}//构造查询条件nativeQueryBuilder.withQuery(boolQuery.build()._toQuery());}//构造查询条件NativeQuery query = nativeQueryBuilder.build();//2.查询SearchHits<Product> result = template.search(query, Product.class);//3.处理查询结果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

5.分页查询

    @Testpublic void findDocuments3(){//1.构造查询条件//分页条件Pageable pageable = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "id"));NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchAllQueryAsQuery()).withPageable(pageable).build();//2.查询SearchHits<Product> result = template.search(query, Product.class);//3.处理查询结果ArrayList content = new ArrayList();for (SearchHit<Product> productSearchHit : result) {content.add(productSearchHit.getContent());}/***封装page对象* 参数1:具体数据 参数2:分页条件对象 参数3:总条数*/Page<PageImpl> page = new PageImpl(content, pageable, result.getTotalHits());System.out.println(page.getTotalElements());System.out.println(page.getTotalPages());System.out.println(page.getContent());}

6.结果排序

    @Testpublic void findDocumentSort(){//1.构造查询条件NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchAllQueryAsQuery())//Sort.Direction.DESC 降序 Sort.Direction.ASC 升序.withSort(Sort.by(Sort.Direction.DESC,"id")).build();//2.查询SearchHits<Product> result = template.search(query, Product.class);//3.处理查询结果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

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

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

相关文章

springboot在线教育平台-计算机毕业设计源码68562

摘要 在数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;在线教育已成为教育领域的重要趋势。为了满足广大学习者对于灵活、高效学习方式的需求&#xff0c;基于Spring Boot的在线教育平台应运而生。Spring Boot以其快速开发、简便部署以及良好的可扩展性&#xff0c…

N6 word2vec文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 上周学习了训练word2vec模型&#xff0c;这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …

【启明智显分享】乐鑫HMI方案4.3寸触摸串口屏:水质检测仪应用解决方案

水是万物的源泉&#xff0c;了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff0c;它让我们能够洞察水的酸碱奥秘。 水是万物的源泉&#xff0c;了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff…

springboot药房库存管理系统-计算机毕业设计源码50588

目 录 摘要 1 绪论 1.1 研究背景与意义 1.2开发现状 1.3论文结构与章节安排 2 药房库存管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

MES ERP PM 质量管理 人机料法环测 质量控制六要素

七要素 在质量管理理论中&#xff0c;特别是在制造业中&#xff0c;分析生产过程中影响产品质量的七个关键因素 人机料法环测七要素是指在质量管理理论中&#xff0c;特别是在制造业中&#xff0c;分析生产过程中影响产品质量的七个关键因素。这七个要素包括&#xff1a; …

谷歌报告显示:2023 年 50% 的0day漏洞利用背后都是间谍软件供应商

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 导 读 谷歌威胁分析小组 (TAG) 和谷歌子公司 Mandiant 表示&#xff0c;他们观察到 2023 年攻击中利用的0day漏洞…

print(f‘ \‘)python中加了\之后有很大空行,如何去掉

在 Python 中&#xff0c;反斜杠 \ 通常用于表示字符串的续行符&#xff0c;允许你将长字符串拆分成多行。然而&#xff0c;如果你在 print 函数中使用反斜杠并在其后面加上空格或换行符&#xff0c;可能会导致意外的空行或空格。 在 print 函数中避免这些空行或空格&#xff…

垃圾百度网盘到底谁在使用

通过链接分享 通过链接分享到vx给好友查看好友在微信聊天框内打开百度网盘链接直接查看即使点击查看大图查看的图片依旧很模糊&#xff0c;不是原图点击右下角去app查看在百度网盘内部查看时&#xff0c;显示的和下载的才是原图真的是用户体验极差&#xff0c;真的垃圾… 通过…

数据结构与算法的联系(笔记)

文章目录 1. 什么是数据结构定义举例CRUD难道不是都一样吗&#xff1f; 总结 2. 什么是算法3. 数据结构与算法的联系举例 4. 推荐 1. 什么是数据结构 定义 数据结构(data structure)是计算机中存储、组织数据的方式。 关键词&#xff1a;① 数据 ② 存储 ③ 组织 举例 以手机通…

基于 Nginx + Spring Boot + Vue + JPA 的网站安全防护指南

引言 在现代互联网时代&#xff0c;确保网站的安全性非常重要。尤其是基于前后端分离架构&#xff0c;更需要特别注意安全防护。接下来&#xff0c;带你了解几种常见的安全攻击及其应对措施。 常见的安全攻击及应对措施 1. 跨站脚本攻击 (XSS) 攻击描述&#xff1a; 跨站脚…

css简单易懂的加载动画,看不会算我输好吧

效果展示 步骤 第一阶段 先准备结构&#xff0c;并且放置12个div&#xff0c;每一个div旋转30*n度&#xff0c; 做一个圆圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式弹性计算集(RDD)相关概念介绍

目录 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依赖关系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化级别 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于语义的法律问答系统

第一步&#xff0c;准备数据集 第二步&#xff0c;构建索引数据集&#xff0c;问答对数据集&#xff0c;训练数据集&#xff0c;召回评估数据集 第三步&#xff0c;构建dataloader,选择优化器训练模型&#xff0c;之后召回评估 第四步&#xff0c;模型动转静&#xff0c;之后…

Synchronized底层工作原理

Synchronized 是Java中最常用的内置锁机制&#xff0c;用于确保多线程环境下的同步。其底层原理涉及到JVM&#xff08;Java虚拟机&#xff09;和字节码指令。以下是 synchronized 的底层工作原理的详细介绍&#xff1a; 1. 基本概念 对象头&#xff08;Object Header&#xf…

【UE5.1 角色练习】15-枪械射击——子弹发射物

目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中&#xff08;【UE5.1 角色练习】06-角色发射火球-part1&#xff09;我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”&#xff0c;用于表示…

科技的成就(六十一)

567、数据虚拟化 用来描述所有数据管理方法的涵盖性术语&#xff0c;这些方法允许应用程序检索并管理数据&#xff0c;且不需要数据相关的技术细节&#xff0c;例如它格式化的方式或物理位置所在。数据整合的过程&#xff0c;以此获得更多的数据信息&#xff0c;这个过程通常会…

SLAM中的块矩阵与schur补

文章目录 SLAM中的块矩阵与schur补Schur补的另一种解释对角块矩阵的逆为各个块的逆的组合 SLAM中的块矩阵与schur补 Schur补的另一种解释 Schur从概率角度来解释是比较常见的一种推导&#xff0c;可以参考博客https://blog.csdn.net/weixin_41469272/article/details/1219944…

若依搭建 帝可得 售货机 笔记

一、搭建项目 1.后端gitee链接&#xff1a; 启动项目时记得修改mysql和redis的相关信息&#xff1b;创建项目相关数据库&#xff0c;并导入初始化的SQL脚本 dkd-parent: 帝可得后台管理系统 (gitee.com) 2.前端gitee链接&#xff1a; 启动项目时记得安装依赖&#xff1a;np…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站&#xff0c;点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用&#xff1a;静态网页服务 之后&#xff0c;事实证明&#xff1a; 总而言之&#xff0c;自动化是一个很令人着迷的东西&#xff0c;摆脱重复繁琐的工作&#xff0c;解放了双手的…

JCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分…