Spring Boot带前后端 渐进式开发企业级博客系统(第7章)

springboot整合elasticsearch
  springboot版本是1.5.4,elasticsearch的版本是2.4.4 ,我使用了springboot 2.0.5版本整合elasticsearch没有成功,在网上搜了一下,这和版本有关系,所以版本是本次案例能不能成功的重要因素。另外也可以不启动客户端,区别在于成功的索引数据放的位置只是有所不同。
(1)引入依赖:

	<!-- easticsearch2.4.4 版本的引入 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>
		<!-- 调用本地方法库,把数据存储到项目下 -->
		<dependency>
			<groupId>net.java.dev.jna</groupId>
			<artifactId>jna</artifactId>
		</dependency>

bean:

@Document(indexName = "test", type = "blog", shards = 1, replicas = 0, refreshInterval = "-1")
//@XmlRootElement // MediaType 转为 XML
//文档
public class EsBlog implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	private String id;
	private String title;
	private String summary;
	private String content;
	public EsBlog() {
		super();
	}
	public EsBlog( String title, String summary, String content) {
		super();
		this.title = title;
		this.summary = summary;
		this.content = content;
	}

Repository:


public interface EsBlogRepository extends ElasticsearchRepository<EsBlog, String> {
  //	分页去重查询博客
	Page<EsBlog> findDistinctByTitleContainingOrSummaryContainingOrContent(String title, String summary,
			String content,Pageable pageable);
}

controller:


@RestController
@RequestMapping("/blogs")
public class EsBlogController {
	@Autowired
	private EsBlogRepository esBlogRepository;
	@GetMapping("/search")
	public List<EsBlog> search(@RequestParam("title")String title, @RequestParam("summary")String summary,
			@RequestParam("content")String content,@RequestParam("pageIndex")int pageIndex,@RequestParam("pageSize")int pageSize){
		Pageable Pageable = new PageRequest(pageIndex,pageSize);
		Page<EsBlog> page = esBlogRepository.findDistinctByTitleContainingOrSummaryContainingOrContent(title, summary,
				content, Pageable);
		return page.getContent();
		
	}

}

application.properties:

#连接超时的时间
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s
#存储索引的位置
spring.data.elasticsearch.properties.path.home=data/elasticsearch

测试案例:


@RunWith(SpringRunner.class)
@SpringBootTest
public class EsBlogRepositoryTest {
	@Autowired
	private EsBlogRepository esBlogRepository;

	@Before
	public void initRepositoryData() {
	
		// 清除所有数据
		esBlogRepository.deleteAll();
		esBlogRepository
				.save(new EsBlog("老卫跟你谈谈安装 Elasticsearch", "关于如何来安装 Elasticsearch", "这个请看我的博客 https://waylau.com"));
		esBlogRepository.save(
				new EsBlog("老卫跟你谈谈 Elasticsearch 的几个用法", "关于如何来用 Elasticsearch", "还是得看我的博客 https://waylau.com,妹")); // 关键字"妹"
		esBlogRepository
				.save(new EsBlog("老卫和你一起学 Elasticsearch", "如何来学习 Elasticsearch", "最终看我的博客 https://waylau.com,酒")); // 关键字"酒"

		esBlogRepository.save(new EsBlog("03-05 用大白话聊聊分布式系统", "一提起“分布式系统”", "大家的第一感觉就是好高大上啊,深不可测"));
		esBlogRepository.save(
				new EsBlog("02-19 Thymeleaf 3 引入了新的解析系统", "如果你的代码使用了 HTML5 的标准", "而Thymeleaf 版本来停留在 2.x ,那么如果没有把闭合"));
		esBlogRepository.save(new EsBlog("02-19 使用 GFM Eclipse 插件时,不在项目里面生成 HTML 文件",
				"GFM 是 GitHub Flavored Markdown Viewer 的简称", "是一款对 GitHub 友好的 Markdown 编辑器 。"));
	}

	@Test
	public void testFindDistinctByTitleContainingOrSummaryContainingOrContent() {
		Pageable Pageable = new PageRequest(0, 20);
		String title = "妹";
		String summary = "妹";
		String content = "酒";
		Page<EsBlog> page = esBlogRepository.findDistinctByTitleContainingOrSummaryContainingOrContent(title, summary,
				content, Pageable);
		for(EsBlog blog:page) {
			System.out.println(blog);
		}
		
		assertThat(page.getTotalElements()).isEqualTo(1);
		
	}

}

测试生成的工程目录:把生成的索引放在了工作目录,因为我没有启动客户端,所以就放在工程目录下。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1 Spring Boot 简介 讲解Spring Boot的项目背景,已经与其他技术框架(比如,SpringSpringMVC、SpringCloud等)的关系。简单介绍下Spring Boot 整个生态系统 第2 开启 Spring Boot 的第一个 Web 项目 通过 Spring Initializr 来快速初始化一个 Spring Boot 原型,方便学员来极速体验Spring Boot。本课程也将会采用Gradle作为项目管理工具,让学员掌握最前瞻的构建工具。通过探索项目让学员了解项目的结构,已经相关的配置原理。 第3 一个Hello World项目 本是正式开始动手敲代码了。依照惯例,会先编写一个最简单的Hello World程序。从项目配置,应用的编写,再到测试用例,最后运行项目。方面学员了解整个编码的流程。 第4 开发环境的搭建 为了让实战过程更顺利,避免不要的问题,这里会先将课程所要求的环境进行一个讲解,并要求学员最好跟随课程的环境配置。本节也会讲解如何将项目导入IDE 来运行。 第5 集成Thymeleaf模版引擎 Thymeleaf 方面的内容,知识点会讲解的相对全面点。Thymeleaf作为界面的模版引擎,对于界面的布局和实现起着非常关键的作用。本节也会讲解Thymeleaf 如何与 Spring Boot 来进行集成。最后通过一个实战,来让学员更加深刻的理解Thymeleaf。… 第6 数据持久化Spring Data JPA 本节涉及数据的持久化。从JPA规范讲起,到Spring对于JPA的用法以及与Hibernate集成实现。本课程的数据库采用MySQL,但也可以方便切换到其他数据库。最后通过一个实战内容,来帮助学员理解掌握。 第7 全文搜索ElasticSearch 企业级应用中,难免会涉及到全文搜素。对于Java应用来说,ElasticSearch在全文搜索方面是一把“利器”。本节会将领学员了解全文搜索的概念,并熟悉如何用ElasticSearch来实现全文搜索。 第8 架构设计与分层 本节讲解了系统的整体架构设计思路,包括如何来组织项目结构。让学员理解系统的数据流程。 第9 集成 Bootstrap Bootsrap最大的好处是,可以让整个系统界面实现响应式布局。本节先从Bootstrap 的基本原理讲起,并将常用的前端框架比如 JQuery等进行集成。最后通过一个实战内容,来帮助学员理解掌握。 第10 博客系统的需求分析与原型设计 本节是对博客系统的需求分析与设计。对于企业级应用的完整流程来说,需求的分析与设计是必不可少的环节。本节设计部分包含了原型设计、数据库设计及接口设计。 第11 权限管理Spring Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,在企业级应用中被广泛使用。本节不会对该框架做深入探讨,仅从基于角色的权限管理角度,来实现对系统的权限管理。 第12 博客系统的整体框架实现 先对系统的整个界面、结构、布局、API进行实现,这样方便每个模块进行划分及实现。 第13 博客系统的用户管理实现 对用户管理模块进行前后台的实现。 第14 博客系统的角色管理实现 对用户角色理模块进行前后台的实现。 第15 博客系统的权限管理实现 对用权限理模块进行前后台的实现。 第16 博客系统博客管理实现 对博客管理模块进行前后台的实现。 第17 博客系统的评论管理实现 对评论管理模块进行前后台的实现。 第18 博客系统的点赞管理实现 对用户点赞理模块进行前后台的实现。 第19 博客系统的分类管理实现 对分类管理模块进行前后台的实现。 第20 博客系统的标签管理实现 对标签管理模块进行前后台的实现。 第21 博客系统的搜索实现 对搜索模块进行前后台的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值