Spring data Jpa操作ES

2023-10-28

以下是使用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查询

关键字 使用示例 等同于的ES查询
And findByNameAndPrice {“bool” : {“must” : [ {“field” : {“name” : “?”}}, {“field” : {“price” : “?”}} ]}}
Or findByNameOrPrice {“bool” : {“should” : [ {“field” : {“name” : “?”}}, {“field” : {“price” : “?”}} ]}}
Is findByName {“bool” : {“must” : {“field” : {“name” : “?”}}}}
Not findByNameNot {“bool” : {“must_not” : {“field” : {“name” : “?”}}}}
Between findByPriceBetween {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
LessThanEqual findByPriceLessThan {“bool” : {“must” : {“range” : {“price” : {“from” : null,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
GreaterThanEqual findByPriceGreaterThan {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : null,”include_lower” : true,”include_upper” : true}}}}}
Before findByPriceBefore {“bool” : {“must” : {“range” : {“price” : {“from” : null,”to” : ?,”include_lower” : true,”include_upper” : true}}}}}
After findByPriceAfter {“bool” : {“must” : {“range” : {“price” : {“from” : ?,”to” : null,”include_lower” : true,”include_upper” : true}}}}}
Like findByNameLike {“bool” : {“must” : {“field” : {“name” : {“query” : “? *”,”analyze_wildcard” : true}}}}}
StartingWith findByNameStartingWith {“bool” : {“must” : {“field” : {“name” : {“query” : “? *”,”analyze_wildcard” : true}}}}}
EndingWith findByNameEndingWith {“bool” : {“must” : {“field” : {“name” : {“query” : “*?”,”analyze_wildcard” : true}}}}}
Contains/Containing findByNameContaining {“bool” : {“must” : {“field” : {“name” : {“query” : “?”,”analyze_wildcard” : true}}}}}
In findByNameIn(Collectionnames) {“bool” : {“must” : {“bool” : {“should” : [ {“field” : {“name” : “?”}}, {“field” : {“name” : “?”}} ]}}}}
NotIn findByNameNotIn(Collectionnames) {“bool” : {“must_not” : {“bool” : {“should” : {“field” : {“name” : “?”}}}}}}
True findByAvailableTrue {“bool” : {“must” : {“field” : {“available” : true}}}}
False findByAvailableFalse {“bool” : {“must” : {“field” : {“available” : false}}}}
OrderBy findByAvailableTrueOrderByNameDesc {“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;
    }
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring data Jpa操作ES 的相关文章

随机推荐

  • PCL 部分点云视点问题

    目录 一 问题概述 二 解决方案 1 软件实现 2 代码实现 三 调整之后 一 问题概述 针对CloudCompare软件处理过的pcd格式点云 在使用PCL进行特征点提取 配准等实验中最终显示结果出现点云位置偏差较大的问题 本博客给出解决
  • 基于pytorch神经网络的工业区域用电量预测 完整代码数据

    代码讲解 工业用电量预测 时间序列预测 基于pytorch神经网络的工业用电量预测 完整代码数据 哔哩哔哩 bilibili 本博客付完整代码数据 运行截图 pip install openpyxl i https pypi tuna ts
  • Maven内置了三大特性:属性、Profile和资源过滤来支持构建的灵活性。

    原文地址 http www cnblogs com woms p 5769680 html 内置属性 主要有两个常用内置属性 basedir 表示项目根目录 即包含pom xml文件的目录 version 表示项目版本 POM属性 pom中
  • 《Effective Java》第二版总结

    Effective Java 主要给了78条编码建议 指导 方便开发者开发出 高效 稳定 健壮 设计优良的程序 下面看一下这78条建议 创建和销毁对象 1 考虑用静态工厂方法代替构造器 为了让客户端获取他自身的一个实例 最常用的方法就是提供
  • UE4材质:纯数学算法实现水面水波扩散效果

    上面的做法有几个问题 1 用于地形时 显示不出来 原因是地形的UV是会超出1的 做如下修正 2 水波在UV边界被截断 暂不处理了 有几个办法 不让水波出现在UV边界上 或在世界空间指定水波位置 在二个相邻的水块中分别为半个水波指定发射位置
  • CTEX安装教程与注意事项

    一 CTEX Latex 下载 百度搜索ctex 进入下载中心 CTEX 2 下载中心中选择稳定版本CTeX 2 9 2 164 点击进入 初学者是使用basic CTeX 2 9 2 164 exe 已足够使用 二 安装 首先备份电脑的环
  • vs试用期延长期到期_VS2017试用期到期后登录微软账户出现错误解决方法

    关于使用VS2017试用期一个月到后 需要登录微软账户后进行认证后才能重新使用 但是登录成功后出现如下错误 We could not refresh the credentials for the account AADSTS50001 T
  • 【IDEA Sprintboot】简单入门:整合SpringSecurity依赖、整合Thymeleaf框架

    目录 1 IDEA 简单入门 请求数据库表数据 水w的博客 CSDN博客 目录 三 1 整合SpringSecurity依赖 2 整合Thymeleaf框架 解决css样式等静态资源访问不到的问题 三 1 整合SpringSecurity依
  • Linux shell脚本之函数 Function 详解

    Linux shell脚本之函数Function 函数详解 函数语法 函数的生命周期 函数返回值 函数参数 变量作用域 1 本地变量 2 局部变量 函数变量示例 函数递归 递归示例 函数示例 函数详解 在过程式编程中 代码会重用 过程式编程
  • IOS集成ctp,恒生,金仕达穿透式监管的一点坑

    官方文档有些问题遗漏 1 要将引入对应头文件的文件用 mm后缀支持c 语法 不然会出现Expected 报错 不支持int 2 在解析的时候存在一些差异 CTP GetSystemInfo返回的数据实际是用char 接收的纯byte数据 用
  • 用RCircos包来画圈圈图

    用RCircos包来画圈圈图 我先讲解了画图 再讲解了一些小知识 安装并加载必须的packages 如果你还没有安装 就运行下面的代码安装 install packages RCircos library RCircos 如果你安装好了 就
  • GCC详解

    开放 自由和灵活是Linux的魅力所在 而这一点在gcc上的体现就是程序员通过它能够更好地控制整个编译过程 在使用gcc编译程序时 编译过程可以细分为 个阶段 预处理 Pre Processing 编译 Compiling 汇编 Assem
  • Linux命令大全(手册)

    https www linuxcool com
  • Android OkHttp源码阅读详解一

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 前言 源码阅读基于okhttp 3 10 0 Android中OkHttp源码阅读二 责任链模式 implementation com
  • 【100天精通python】Day42:python网络爬虫开发_HTTP请求库requests 常用语法与实战

    目录 1 HTTP协议 2 HTTP与HTTPS 3 HTTP请求过程 3 1 HTTP请求过程 3 2 GET请求与POST请求 3 3
  • 树莓派快速扩容

    当树莓派默认的系统空间已经被占满 无法再进行安装等操作 而 SD卡仍有空间未被使用 可以对树莓派进行扩容 假设一个镜像的大小为 4G 由于该镜像对内存卡的要求是大于或等于 4G 但对于 4G以上的内存卡来说 树莓派的系统只利用到 4G 因此
  • 2.机器学习之单变量线性回归(李宏毅)

    2 单变量线性回归 Linear Regression with One Variable 2 1 模型表示 Model Represention 以前面说的例子 房子的价格是个回归问题 回归一词指的是 我们根据之前的数据预测出一个准确的输
  • 拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 工作准备 一台SQLSERVER 2005 SQLSERVER 2008服务 SQLSERVER jdbc驱动程序 Java开发环境eclipse jdk1 8 java反
  • java爬虫代码示例_Excel VBA 实战(8) - 巨潮资讯 VBA 爬虫

    2019年6月25日 更新 由于巨潮资讯查询API变更 此文章当中的所涉及代码也进行了相应更新 虽然原代码当前已经失效 但是爬虫的基本逻辑仍然适用 因此请没有相关基础的朋友们先行阅读此文 实战代码部分请移步至如下链接 杨风飒 Excel V
  • Spring data Jpa操作ES

    以下是使用Spring data Jpa操作ES的一些记录 在ElasticsearchRepository中我们可以使用Not Add Like Or Between等关键词自动创建查询语句 记住上面这句话 代码示例 public int