Spring data Jpa操作ES

es中ElasticsearchRepository 的原理和使用 把数据存储到es中,有两种方式一种是ElasticsearchRepository 接口,另一种是ElasticsearchTemplate接口,今天我们主要分析ElasticsearchRepository接口。 一、ElasticsearchRepository 原理分析: 1、首先springBoot 项目的pom文件中引入jar包: <!-- ES搜索 --> <dependency> <groupId>org.s. 阅读详情

Spring data Jpa操作ES

在ElasticsearchRepository中我们可以使用Not Add Like Or Between等关键词自动创建查询语句。

记住上面这句话,代码示例:

public interface EmployeeRepository extends ElasticsearchRepository<Employee, String> {

    /**
     * 通过ID字段查询
     */
    Employee queryEmployeeById(String id);

}

打开这个类我们发现:

@NoRepositoryBean
public interface ElasticsearchRepository<T, ID extends Serializable> extends ElasticsearchCrudRepository<T, ID> {
    <S extends T> S index(S var1);

    Iterable<T> search(QueryBuilder var1);

    Page<T> search(QueryBuilder var1, Pageable var2);

    Page<T> search(SearchQuery var1);

    Page<T> searchSimilar(T var1, String[] var2, Pageable var3);

    void refresh();

    Class<T> getEntityClass();
}

那么具体关键字有哪些呢?下面一一列出:

关键字使用示例等同于的ES查询
AndfindByNameAndPrice{“bool” : {“must” : [ {“field” : {“name” : “?”}}, {“field” : {“price” : “?”}} ]}}
OrfindByNameOrPrice{“bool” : {“should” : [ {“field” : {“name” : “?”}}, {“field” : {“price” : “?”}} ]}}
IsfindByName{“bool” : {“must” : {“field” : {“name” : “?”}}}}
NotfindByNameNot{“bool” : {“must_not” : {“field” : {“name” : “?”}}}}
BetweenfindByPriceBetween{“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
LessThanEqualfindByPriceLessThan{“bool” : {“must” : {“range” : {“price” : {“from” : null,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
GreaterThanEqualfindByPriceGreaterThan{“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : null,”include_lower” : true,”include_upper” : true}}}}}
BeforefindByPriceBefore{“bool” : {“must” : {“range” : {“price” : {“from” : null,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
AfterfindByPriceAfter{“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : null,”include_lower” : true,”include_upper” : true}}}}}
LikefindByNameLike{“bool” : {“must” : {“field” : {“name” : {“query” : “? *”,”analyze_wildcard” : true}}}}}
StartingWithfindByNameStartingWith{“bool” : {“must” : {“field” : {“name” : {“query” : “? *”,”analyze_wildcard” : true}}}}}
EndingWithfindByNameEndingWith{“bool” : {“must” : {“field” : {“name” : {“query” : “*?”,”analyze_wildcard” : true}}}}}
Contains/ContainingfindByNameContaining{“bool” : {“must” : {“field” : {“name” : {“query” : “?”,”analyze_wildcard” : true}}}}}
InfindByNameIn(Collectionnames){“bool” : {“must” : {“bool” : {“should” : [ {“field” : {“name” : “?”}}, {“field” : {“name” : “?”}} ]}}}}
NotInfindByNameNotIn(Collectionnames){“bool” : {“must_not” : {“bool” : {“should” : {“field” : {“name” : “?”}}}}}}
TruefindByAvailableTrue{“bool” : {“must” : {“field” : {“available” : true}}}}
FalsefindByAvailableFalse{“bool” : {“must” : {“field” : {“available” : false}}}}
OrderByfindByAvailableTrueOrderByNameDesc{“sort” : [{ “name” : {“order” : “desc”} }],”bool” : {“must” : {“field” : {“available” : true}}}}

那么通过上述我们就可以写出一个简单的例子:

  @Autowired
    private EmployeeRepository employeeRepository; 


 /**
     * 查询
     */
    @RequestMapping("/query/{id}")
    public Employee query(@PathVariable("id") String id) {

        Employee accountInfo = employeeRepository.queryEmployeeById(id);
        System.err.println(accountInfo.toString());

        return accountInfo;
    }
 

/**
     * 聚合查询测试
     */
    @RequestMapping("/querySum")
    public Iterable querySum() {
        /**
         * 创建查询体
         */
        BoolQueryBuilder builder = QueryBuilders.boolQuery();

        /**
         * 设置聚合条件
         */
        RangeQueryBuilder query = QueryBuilders.rangeQuery("age").from("30").to("60");
        
        /**
         * 将聚合条件设置入查询体之中
         */
        builder.must(query);

        Iterable<Employee> search = employeeRepository.search(builder);

        return search;
    }

至此最基本的功能已经完成

第 4-8 课:Spring Boot 集成 ElasticSearch ElasticSearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有。 ElasticSearch 使用 Java 编写的,它的内部使用的是 Lucene 做索引与搜索,它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之提供了一套简单一致的 RE... 阅读详情

相关推荐

避开STM32H7的‘保护陷阱’:从Option Byte机制深度解析读写保护原理与预防

本文深度解析STM32H723VGT6的Option Byte保护机制,详细讲解RDP读保护和WRP写保护的工作原理及配置方法,并提供硬件设计防御策略和软件预防性编程技巧,帮助开发者避免误触发保护机制导致芯片锁定的问题。

weixin_33686714的博客 441

使用ElasticsearchRepository和ElasticsearchRestTemplate操作Elasticsearch,Spring Boot整合Elasticsearch

添加依赖 修改yml配置文件 一、实体类 二、继承ElasticsearchRepository类 【自定义方法命名约定】:代码如下(示例): 2.实现方法 3.接口测试 总结 如果注入失败ElasticsearchRepository:

weixin_43702295的博客 4362

SpringBoot集成SpringSecurity5和OAuth2 — 2、OAuth2客户端【SSO单点登录时作为客户端】

SpringBoot集成SpringSecurity5和OAuth2 — 2、OAuth2客户端【SSO单点登录时作为客户端】

Mr_XiMu的博客 3742

ElasticsearchRestTemplate 和ElasticsearchRepository 的使用

ElasticsearchRestTemplate 和ElasticSearchClient 的使用

深圳市多克创新科技有限公司 1万+

3小时学会AI建站!无需编程,个人简历独立站开发速成指南

3小时学会AI建站!个人简历独立站开发速成指南

pei_laoshi的博客 1259

Python爬虫实战:抓取全球船舶AIS定位数据的全流程指南

AIS(Automatic Identification System)自动识别系统是目前全球航运中用于实时跟踪船只位置的主要技术。名称、MMSI编号、呼号实时经纬度船速、航向吃水、目的港状态(航行/停泊/锚泊)航线信息等🛰️海上运输监控:追踪航线,预估到港时间;🛳️船舶管理系统:为物流、港口运营提供决策依据;🌊研究分析:如海洋运输碳排放研究、船只拥堵热力图等;🧠人工智能训练数据集:用于轨迹预测、碰撞预警模型。

2201_76125261的博客 1364

Spring Boot 中的 ElasticsearchRepository 是什么,原理,如何使用

ElasticsearchRepository 是 Spring Data Elasticsearch 提供的一个仓库接口,用于简化对 Elasticsearch 数据库的操作。它继承了 CrudRepository 接口和 PagingAndSortingRepository 接口,提供了 Elasticsearch 数据库的基本操作方法,并提供了一些查询方法,可以通过方法名来自动生成查询语句。

Java徐师兄的博客 2828

用Python爬取政府采购信息的实战全流程

以 Playwright 自动采集政府采购信息结构化存储与查询可拓展关键词过滤与通知机制。

2201_76125261的博客 1146

ElasticSearchRepository和ElasticsearchRestTemplate的使用

在上一章节,我们学习到了es通过RestHighLevelClient实现最基本的增删改查的语法,在本章我们继续深入实践一下es的相关操作,在SpringBoot的相关依赖中,es已经帮我们将基本的操作都进行了封装,我们只需要掌握这些api,便可以轻松的操作我们的es。要构建QueryBuilder,我们可以使用工具类QueryBuilders,里面有大量的方法用来完成各种各样的QueryBuilder的构建,字符串的、Boolean型的、match的、地理范围的等等。它们通常用于过滤,排序,和聚合。

zhiyikeji的博客 5030

IgH EtherCAT 从入门到精通:第 2 章 环境搭建与编译安装

环境搭建与编译安装指南 本章详细介绍了搭建IgH EtherCAT Master开发环境的完整流程。内容包括: 硬件要求:支持多种Intel和Realtek网卡的原生驱动,以及通用网卡的generic驱动选项 软件依赖:列出Linux系统下所需的工具链和开发包 源码获取:通过Git克隆官方仓库并切换稳定版本的方法 配置选项:详细解析bootstrap脚本和configure的核心参数,包括路径设置、功能开关和实时框架选项 编译流程:从生成构建系统到最终编译安装的完整步骤 通过本章指导,读者可以完成一个可运行

从事嵌入式linux android驱动开发,拥有全栈能力 479

YOLOv11 改进 | 模块即插即用

YOLOv11 是一种单阶段目标检测算法,其核心设计目标在于实现检测速度与精度的平衡。其架构延续了 YOLO 系列“端到端”检测的思路,通过统一的网络结构完成特征提取、多尺度特征融合及最终的边界框预测与分类任务。骨干网络(Backbone)颈部网络(Neck)和检测头(Head)。骨干网络负责从输入图像中提取多层次的语义特征。

u012133341的博客 3122

spring-data-elasticsearch简单案例

关于spring-data-es注解以及案例还可以参照https://blog.youkuaiyun.com/qq_43652509/article/details/83989257 一、spring-data-elasticsearch 的工程介绍 spring-data-elasticsearch 的工程,介绍 Spring Data Elasticsearch 简单的 ES 操作。Spring Data...

xiaolong2230的博客 1557

RK3588平台MIPI DSI屏幕调试记录

本文是基于RK3588平台,MIPI屏调试总结。调试过程中遇到的问题:一开始很久没亮,测量了电源电压和波形都正常。后来换了一组板子和屏幕做对比。最后是因为屏幕的座子没焊接好,二是接MIPI屏幕的排线太长会影响数据传输。换了一根短的线之后屏幕亮起。vp2vp3。

bingdund的博客 1390

Java操作elasticsearch(Es)实现基本查询和分页功能的实现

我使用的是基于springBoot的ElasticsearchTemplate的实现;此方法相对简单! 1》pom文件如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elastics...

Myself_Wqx的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

springboot es集成_elasticsearch入门 springboot2集成elasticsearch 实现全文搜索

springboot整合elasticsearch常用的方式有以下三种1,Java API这种方式基于TCP和ES通信,官方已经明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它,所以不提倡。2,REST Client上面的方式1是基于TCP和ES通信的(而且TransPort将来会被抛弃……),官方也给出了基于HTTP的客户端REST Client...

weixin_39975868的博客 120

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

springboot集成spring data ElasticSearch

ES支持SpringBoot使用类似于Spring Data Jpa的方式查询,使得查询更加方便。 1、依赖引入 1 2 compile “org.springframework.boot:spring-boot-starter-data-elasticsearch:2.1.7.RELEASE” compile “org.elasticsea...

wyydgq的博客 266

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SpringBoot中使用Elasticsearch入门教程(上)

Spring Data全家桶中对Elasticsearch也做了集成,本会基于最新的Spring Data Elasticsearch 4.0介绍在spring中对ES的基本使用。

Doit_kang的博客 2318

spring data(JPA/REST/REDIS/ES)

文章目录JPA (java persistence api)spring data jpa依赖配置注解使用1. entity实体类2. Repository层3. service 层Controller层 JPA (java persistence api) JPA是一种ORM规范 spring data jpa 是jpa的抽象层 由ORM框架提供JPA具体实现,如: hibernate,EclipseLink,open jpa,mybatis(不完整的orm框架),mybatisPlus相当于补全了my

xyc1211的博客 220

个人博客开发总结(四)

ES的增删改查(spring data elasticsearch) 自定义符合jpa命名规范的PostRepository接口,继承ElasticsearchRepository接口 分页显示搜索记录,jpa中的Page不是mybatis plus中的Page,需要将mybatis plus的page 转成 jpa的 page,搜索es得到pageData后,再将jpa的pageData转成mybatis plus的pageData 不查询数据库,而是通过ES(通过modelMapper将PostVo

qq_42098875的博客 319

Spring data jpa 官网文档中文版

https://docs.spring.io/spring-data/jpa/docs/2.0.3.RELEASE/reference/html/#new-features.1-11-0 mgdb: https://docs.spring.io/spring-data/data-mongodb/docs/2.0.1.RELEASE/reference/html/ https://docs.s...

weixin_41244495的博客 1万+

Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

Springboot整合spring-data-jap和spring-data-elasticsearch

百世经纶『一页書』 6659

SpringData Elasticsearch

SpringData Elasticsearch 2.1 目标 2.2 讲解 2.2.1 SpringDataJpa介绍 JPA是一个规范,真正操作数据库的是Hibernate,而springdatajpa是对jpa的封装,将CRUD的方法封装到指定的方法中,操作的时候,只需要调用方法即可。 Spring Data Jpa的实现过程: 1:定义实体,实体类添加Jpa的注解 2:定...

少营营的博客 535

spring-data-elasticsearch使用

spring框架操作elasticsearch可以有很方法, 1、使用原始的客户端比如RestHighLevelClient(es官方提供并推荐的)、Jest等 2、使用spring data elasticsearch模块 本文讲述的是spring data elasticsearch的应用,应该这种使用方式对于使用过jpa的开发人员来说,入门门槛很低,简单的搜索查询完全可以胜任。 本文...

johnhuster的专栏 1954

spring data elasticsearch在使用5.x版本遇到的坑

一、spring data elasticsearch整合了elasticsearch本来可以很方便的使用,但是当你在spring data jpa框架中使用就会出现spring-data-commons版本冲突问题,那么这个时候就不能直接使用spring data elasticsearch来操作elasticsearch5.x了,这个时候可以使用客户端来操作elasticsearch5.x,p...

cow5287687的博客 5019

ElasticSearch03

JPA是一个规范,真正操作数据库的是Hibernate(实现数据库增删改查框架[ORM框架],操作数据库采用的方式是面向对象[不写SQL语句]),而spring data jpa是对jpa的封装,将CRUD的方法封装到指定的方法中,操作的时候,只需要调用方法即可。Spring Data Jpa的实现过程:1:定义实体,实体类添加Jpa的注解 @Entity @Table @Cloumn @Id2:定义接口,接口要继承JpaRepository的接口。

Sky_小天 1105
上一篇: rancher搭建k8s集群
下一篇: redis单机和哨兵配置
我是陈胖丁
博客等级 码龄11年 207粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值