前期准备

本地安装好es:安装教程

项目结构

代码编写

1、pom文件

    <dependencies><!--springboot通用--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.2.RELEASE</version></dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework</groupId>-->
<!--            <artifactId>spring-tx</artifactId>-->
<!--            <version>5.3.22</version>-->
<!--        </dependency>--><!--es--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.2.2.RELEASE</version></dependency><!--mysql8--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version></dependency><!--mybatisplus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.8</version><scope>compile</scope></dependency><!--使用Swagger2--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.9</version></dependency><!--工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.6</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-commons</artifactId><version>2.2.2.RELEASE</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency></dependencies>

注:springboot的版本不要太高,避免出现报错

2、yml文件

server:port: 8078spring:datasource:url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: xinghun12138.driver-class-name: com.mysql.cj.jdbc.Driverdata:elasticsearch:repositories:enabled: truecluster-nodes: 127.0.0.1:9300 # es的连接地址及端口号cluster-name: elasticsearch # es集群的名称mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpltypeAliasesPackage: com.lx.entitymapperLocations: classpath:mapper/*.xml

3、配置类

package com.lx.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {@Bean(value = "dockerBean")public Docket dockerBean() {//指定使用Swagger2规范Docket docket=new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder()//描述字段支持Markdown语法.description("# Knife4j RESTful APIs").termsOfServiceUrl("https://doc.xiaominfo.com/").contact("xiaoymin@foxmail.com").version("1.0").build())//分组名称.groupName("用户服务").select()//这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("com.lx.controller")).paths(PathSelectors.any()).build();return docket;}
}
package com.lx.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MybatisPlusConfig {// 最新版@Bean  // <bean id=""/>public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}

4、核心逻辑

package com.lx.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lx.dao.mapper.BookMapper;
import com.lx.dao.repository.EsBookRepository;
import com.lx.entity.dto.EsBook;
import com.lx.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;/*** description TODO** @author 流星* @date 2022/9/19 15:29*/
@Service
public class BookServiceImpl implements BookService {@Resourceprivate BookMapper bookMapper;@Autowiredprivate EsBookRepository bookRepository;@Overridepublic int importAll() {List<EsBook> books = bookMapper.queryBook(null);Iterable<EsBook> bookIterable = bookRepository.saveAll(books);Iterator<EsBook> iterator = bookIterable.iterator();int result = 0;while (iterator.hasNext()) {result++;iterator.next();}return result;}@Overridepublic void delete(Long id) {bookRepository.deleteById(id);}@Overridepublic EsBook create(Long id) {EsBook result = null;List<EsBook> esProductList = bookMapper.queryBook(id);if (esProductList.size() > 0) {EsBook esProduct = esProductList.get(0);result = bookRepository.save(esProduct);}return result;}@Overridepublic void delete(List<Long> ids) {if (!CollectionUtils.isEmpty(ids)) {List<EsBook> esProductList = new ArrayList<>();for (Long id : ids) {EsBook esProduct = new EsBook();esProduct.setId(id);esProductList.add(esProduct);}bookRepository.deleteAll(esProductList);}}@Overridepublic Page<EsBook> search(String keyword, Integer pageNum, Integer pageSize) {Pageable pageable = PageRequest.of(pageNum, pageSize);return bookRepository.findByTitleOrAuthor(keyword, keyword, pageable);}
}

5、其他代码

由于篇幅有限,就不一一放上去了,末尾我会放置Gitee地址,感兴趣的伙伴可以拉下来自行查看。

测试结果


浏览器访问:http://localhost:8078/doc.html

附:源码

es搜索

Spring boot 项目(二十六)——集成elasticsearch实现简单的书籍搜索相关推荐

  1. Spring Boot教程(二十):Spring Boot使用String Task定时任务

    一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...

  2. Spring boot 项目(十二)——实现电脑网页微信扫码自动授权

    引言 电脑端微信网页扫码授权登录有2种方式: 第一种:基于微信公众号,单独获取登录二维码扫码,然后扫码登录,程序控制跳转逻辑,例如CSDN 第二种:基于微信开放平台,跳转到微信二维码页面进行扫码登录, ...

  3. Spring Boot Ajax实例(十六)

    这篇博文主要用于新手学习Spring Boot,同时也记录自己学习的过程- 文章内容主要来源于易百教程 本文将展示如何使用jQuery.ajax将HTML表单请求发送到Spring REST API并 ...

  4. Vue + Spring Boot 项目实战(六):前端路由与登录拦截器

    本篇目录 前言 一.前端路由 二.使用 History 模式 三.后端登录拦截器 1.LoginController 2.LoginInterceptor 3.WebConfigurer 4.效果检验 ...

  5. Spring Boot(二): 集成Mybatis

    上一篇讲述了什么是Spring Boot.如何创建Sping Boot项目以及如何通过配置修改端口号: 本篇将讲述Spring Boot与Mybatis的整合过程. 一.添加mybatis以及mysq ...

  6. vue拦截器刷新登陆页面_Vue + Spring Boot 项目实战(六):前端路由与登录拦截器-Go语言中文社区...

    前言 这一篇主要讲前端路由与登录拦截器的实现.放在一起讲是因为我在开发登录拦截器时因为这个路由的问题遇到了很多坑,花费了很长时间,网上的解决方案都不怎么靠谱,综合了好几种办法才最终成功,其实关于这个部 ...

  7. Vue + Spring Boot 项目实战(六):使用 Element 辅助前端开发

    文章目录 一.安装并引入 Element 1.安装 Element 2.引入 Element 二.优化登录页面 1.使用 Form 组件 2.添加样式 3.设置背景 4.完整代码 之前我们实现了登录功 ...

  8. spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求

    有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想,是真的么?,忙到这几个字都没时间打么?毕竟大家都很忙的,所以忙并不是啥理由. 那是因为啥呢? ...

  9. 分布式电商项目二十六:使用阿里云存储的服务端签名后直传(前端联调)

    使用阿里云存储的服务端签名后直传(前端联调) 在前端显示上传的界面,可以根据人人fast-vue的结构,在src\components目录下添加upload文件夹,直接添加vue组件即可,总计三个组件 ...

最新文章

  1. Django的model.py
  2. 解决WinCE自动挂起的问题
  3. 最短路问题之Bellman-ford算法
  4. yjk只算弹性的不计算弹塑性_材料本构弹塑性力学知识二
  5. 使用ABP打造SAAS系统(2)——前端框架选择
  6. python下表运算_python科学计算_numpy_广播与下标
  7. 在虚拟宿主环境中承载 Active Directory 域控制器时需要考虑的事项
  8. Linux编程(1)_关于linux基础知识
  9. java怎样将日期本土化_Java中的日期操作
  10. java数组循环扩容_Java中实现数组动态扩容的两种方法
  11. MySQL数据库分布式事务XA实现原理分析
  12. 2017 部门文化宣贯会议内容
  13. python绘制wx+b_【教学分享】大数据博士教你用python玩转时空大数据
  14. mysql分表的原则_分库分表原则 总结
  15. linux网络绑定和网络成祖,圣斗士之家
  16. Oracle Coherence中文教程五:Coherence调试
  17. Django ORM模型一对一、一对多、多对多的操作详解
  18. python字典的存储结构_Python 字典的存储结构
  19. 【荐课】10分钟速成课:经济学
  20. 西安市版权申请代理公司怎么选,哪些类型作品受版权保护?

热门文章

  1. 基于java珠宝销售商城网站
  2. 5G时代,为何各大厂纷纷杀入音视频领域?站在风口上猪都能飞
  3. Diagram Designer流程图制作工具下载安装及使用
  4. WEB应用开发(一)-环境搭建。
  5. LeetCode-Python 栈专题(学习笔记+代码)
  6. coreldraw x8里线段显示尺寸_CorelDRAW X8轮廓线的粗细变化两种方法介绍-轮廓线的粗细变化教程_好特教程...
  7. 《小狗钱钱》——追加书摘
  8. SpringBoot 使用 Redis 分布式锁解决并发问题
  9. lol无限火力服务器崩溃,LOL:无限火力把服务器挤崩溃了?玩家集体开始吐槽,玩的是心态...
  10. 如何批量删除文件名中相同的前缀?