SpringBoot整合ElasticSearch实现分页查询

本文使用SpringBoot整合ElasticSearch实现分页查询

文章目录

  • 环境准备
  • 分页查询
    • 方式一
    • 方式二
  • 本文小结


环境准备

还是继续使用spring-boot-starter-data-elasticsearch来实现分页查询操作

<!-- spring-boot-starter-data-elasticsearch-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.6.6</version>
</dependency>

数据准备

在这里插入图片描述


分页查询

方式一

使用ElasticsearchRestTemplate来实现


import cn.wideth.po.Article;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@Slf4j
@Api(value = "es分页查询测试")
@RestController
@RequestMapping("/api/listEs")
public class ArticleListController {@Autowiredprivate ElasticsearchRestTemplate elasticsearchRestTemplate;// 分页列表查询// 旧版本的 Repository 中的 search 方法被废弃了。// 这里采用 ElasticSearchRestTemplate@GetMapping("/pageList")@ApiOperation("ES分页查询-方法一")public Map pageList(Integer currentPage, Integer limit) {NativeSearchQuery query = new NativeSearchQuery(new BoolQueryBuilder());query.setPageable(PageRequest.of(currentPage, limit));// 方法1:SearchHits<Article> searchHits = elasticsearchRestTemplate.search(query, Article.class);List<Article> articles = searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());Map jsonResult = new LinkedHashMap<>();jsonResult.put("count", searchHits.getTotalHits());jsonResult.put("articles", articles);return jsonResult;}
}

程序结果

在这里插入图片描述


方式二

使用ElasticsearchOperations来实现

import cn.wideth.po.Article;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@Slf4j
@Api(value = "es分页查询测试2")
@RestController
@RequestMapping("/api/listEs")
public class ArticleListTwoController {@Autowiredprivate ElasticsearchOperations elasticsearchOperations;// 分页列表查询// 旧版本的 Repository 中的 search 方法被废弃了。// 这里采用 ElasticsearchOperations 来进行分页查询@GetMapping("/pageList2")@ApiOperation("ES分页查询-方法二")public Map pageList2(Integer currentPage, Integer limit) {NativeSearchQuery query = new NativeSearchQuery(new BoolQueryBuilder());query.setPageable(PageRequest.of(currentPage, limit));// 方法2:SearchHits<Article> searchHits = elasticsearchOperations.search(query, Article.class);List<Article> articles = searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());Map jsonResult = new LinkedHashMap<>();jsonResult.put("count", searchHits.getTotalHits());jsonResult.put("articles", articles);return jsonResult;}}

程序结果

在这里插入图片描述


本文小结

本文记录了SpringBoot整合ElasticSearch来实现分页查询的两种方式

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

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

相关文章

基于SpringBoot + vue 的旅游景区网站系统设计与实现

目录 一、需求分析 二、技术分析 三、功能分析 四、数据设计 五、界面展示 六、资源获取 一、需求分析 旅游推荐网站是指提供旅游相关信息、服务和建议的在线平台。这些网站旨在帮助用户规划和安排旅行&#xff0c;提供目的地信息、酒店预订、机票预订、租车服务、旅行建…

antv/g6绘制数据流向图

antv/g6绘制数据流向图 前言接口模拟数据htmlts页面效果 前言 在业务开发中需要绘制数据流向图&#xff0c;由于echarts关系图的限制以及需求的特殊要求&#xff0c;转而使用antv/g6实现&#xff0c;本文以代码的方式实现数据流向需求以及节点分组,版本"antv/g6": “…

从零学习开发一个RISC-V操作系统(四)丨RISC-V汇编语言编程

本篇文章的内容 一、RISC-V汇编语言简介1.1 RISC-V 汇编语言的基本格式1.2 RISC-V 汇编指令操作对象1.3 RISC-V 汇编指令编码格式1.4 RISC-V 汇编指令分类 二、RISC-V汇编语言详解2.1 add 加法指令2.2 sub 减法指令 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习…

linux条件判断练习

1.实现自动生成相应的压缩包 1.写一个脚本&#xff0c;完成如下功能 传递一个参数给脚本&#xff0c;此参数为gzip、bzip2或者xz三者之一&#xff1b; (1) 如果参数1的值为gzip&#xff0c;则使用tar和gzip归档压缩/etc目录至/backups目录中&#xff0c;并命名为/backups/etc-…

PPP协议原理介绍+报文分析+配置指导-RFC1661

个人认为&#xff0c;理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息&#xff0c;更加便于理解协议。 因此本文将在PPP协议报文的基础上进行介绍。 关于PPP协议基本原理&#xff0c;可参考RFC1661-The Point-to-Point Protocol (PPP)。 关于P…

【JavaEE】文件操作 —— IO

文件操作 —— IO 1. 文件的属性 文件内容文件大小文件路径文件名称 2. 文件的管理 采用树形结构进行管理。 3. 文件路径 分为两种&#xff1a;相对、绝对路径。 相对路径&#xff1a;相对于当前位置的路径&#xff0c;以“./xxx.xxx”为标志绝对路径&#xff1a;以从盘符…

手动导入jar包到Maven的解决方案(简单有效!)

想要导入一个jar包到项目中&#xff0c;这个jar包在Maven中没有可以尝试以下方式。 第一步 先找到你maven的本地仓库&#xff0c;我的仓库就在这里&#xff0c;你可以根据你安装的maven找到你的目录 第二步 根据坐标创建文件夹。 这个依赖modbus4j.jar&#xff0c;Maven远…

PyQt ------ QTextEditor

PyQt ------ QTextEditor 引言正文示例1------进阶示例 引言 这里给大家介绍一下 PyQt6 中的 QTextEditor 组件用法。 正文 QTextEditor 可以进行多行字符串输出的组件。 想要获取 QTextEditor 组件中当前存放的字符串&#xff0c;需要使用&#xff1a; QTextEditor.toPla…

《GreenPlum系列》GreenPlum初级教程-GreenPlum详细入门教程

文章目录 GreenPlum详细入门教程第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 第二章 GreenPlum单节点安装1.Docker创建centos容器1.1 拉取centos7镜像1.2 创建容器1.3 进入容器1.4 容器和服务器免密操作1.4.1 生成密钥1.4.…

idea创建公用依赖包项目

创建parent项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

服务器管理平台(6)- Utils

Utils 本篇为服务器管理平台的结篇&#xff0c;讲述一些必要的Util&#xff0c;如钉钉告警、安全加密、远程登录等功能的实现 1、钉钉告警 1.1、SQL配置告警规则 逻辑磁盘容量已使用比例超过90% 超过30天未登录 字段名称字段类型解释Idint自增IDTablestring监测表名Metri…

matlab appdesigner系列-常用18-表格

表格&#xff0c;常用来导入外部表格数据 示例&#xff1a; 导入外界excel数据&#xff1a;data.xlsx 姓名年龄城市王一18长沙王二21上海王三56武汉王四47北京王五88成都王六23长春 操作步骤如下&#xff1a; 1&#xff09;将表格拖拽到画布上 2&#xff09;对app1右键进行…

GPSR路由算法的MATLAB实现

GPSR基于节点地理位置路由信息&#xff0c;采用贪婪策略和右手准则的结合在邻居节点中选择下一跳节点进行数据转发。节点在进行路由选择时&#xff0c;只需知道自己、邻居和目标节点的地理位置信息&#xff0c;无需维护全局网络的链路状态&#xff0c;这在很大程度上降低了网络…

高质量简历模板网站,免费、免费、免费

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…

基于 Docker 部署 Pingvin Share 文件共享平台

一、Pingvin Share 介绍 Pingvin Share 简介 Pingvin Share 是自托管文件共享平台&#xff0c;是 WeTransfer 的替代方案。 Pingvin Share 特点 在 2 分钟内启动您的实例使用可通过链接访问的文件创建共享没有文件大小限制&#xff0c;只有你的磁盘是你的限制设置共享到期时间…

C++11新特性:final/override控制

override关键字 用于显式标识一个成员函数&#xff08;通常是虚函数&#xff09;是在派生类中重写&#xff08;覆盖&#xff09;了基类中的虚函数。这有助于提高代码的可读性&#xff0c;同时在编译时提供了检查&#xff0c;确保派生类中的函数确实是在基类中有对应的虚函数。…

GZ036 区块链技术应用赛项赛题第3套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷&#xff08;3卷&#xff09; 任 务 书 参赛队编号&#xff1a; 背景描述 新能源作为新兴领域&#xff0c;产业呈现碎片化与复杂化的特性&#xff0c;逐渐出现管理困难、供应链金融、可信监管与数…

论文阅读_训练大模型用于角色扮演

英文名称: Character-LLM: A Trainable Agent for Role-Playing 中文名称: 角色-LLM&#xff1a;训练Agent用于角色扮演 文章: [https://arxiv.org/abs/2310.10158](https://arxiv.org/abs/2310.10158) 作者: Yunfan Shao, Linyang Li, Junqi Dai, Xipeng Qiu 机构: 复旦大学…

军事智能中的深度强化学习不同于传统的深度强化学习

在军事智能中&#xff0c;“诡”和“诈”是两个最重要的概念。 “诡”变指的是智能体通过采取一些不可预测或复杂的变化策略来获得优势。诡变可能包括逃避对手的观察或引诱对手采取不利的行动。智能体可以使用诡变来欺骗对手&#xff0c;使其做出错误的决策或暴露其策略。 “诈…

【第七在线】智能商品计划:重塑服装行业的供应链管理

在当今快速变化的市场环境中&#xff0c;供应链管理已成为企业成功的关键因素之一。尤其在服装行业&#xff0c;供应链的效率、灵活性和透明度直接影响着企业的竞争力和盈利能力。随着技术的发展&#xff0c;智能商品计划正逐渐成为重塑供应链管理的强大工具。 一、智能商品计划…