spring-boot学习笔记(三)ElasticSearch介绍与项目集成

网友投稿 866 2022-05-29

一、ElasticSearch介绍

分布式高可用,例如将一个系统部署在一台服务器上面,某一天崩溃了,该系统就无法使用了,但是当分布式部署到多台服务器上面之后,其中几个服务器崩溃掉了,但是不会影响整体的运作,从而实现高可用。

二、ElasticSearch项目集成

1、build.gradle添加es依赖和jna依赖,application.properties配置文件添加es服务地址和连接超时时间

dependencies {

compile('org.springframework.boot:spring-boot-starter-web')

compile('org.springframework.boot:spring-boot-starter-thymeleaf')

compile('org.springframework.boot:spring-boot-starter-data-jpa')

compile('org.springframework.boot:spring-boot-starter-data-elasticsearch')

runtime('com.h2database:h2:1.4.196')

testCompile('org.springframework.boot:spring-boot-starter-test')

compile('mysql:mysql-connector-java:6.0.5')

compile('net.java.dev.jna:jna:4.5.1')

}

#elasticSearch服务地址

spring.data.elasticsearch.cluster-nodes=localhost:9300

#设置连接超时时间

spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s

spring-boot学习笔记(三)ElasticSearch介绍与项目集成

2、下载elasticsearch-6.3.0,解压到d:盘下,打开D:\elasticsearch-6.3.0\bin ,点击elasticsearch.bat 启动es服务,

访问本地9200端口,看到es版本信息说明启动成功。

3、编写测试用例

新建EsBlog实体类

*/

@Document(indexName="blog",type="blog")

public class EsBlog implements Serializable {

/**

*

*/

private static final long serialVersionUID = 159383211493905568L;

@Id

private String id;

private String title;

private String summary;

private String content;

编写接口继承ElasticsearchRepository

public interface EsBlogRepository extends ElasticsearchRepository {

/**

* 分页查询博客去重

* @param title

* @param summary

* @param content

* @param pageable

* @return Page

*/

Page findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(String title,String summary,String content,Pageable pageable);

}

编写测试test代码

@RunWith(SpringRunner.class)

@SpringBootTest

public class EsBlogRepositoryTest {

@Autowired

private EsBlogRepository esBlogRepository;

public void initRepositoryData() {

/**

* 删除所有数据

*/

esBlogRepository.deleteAll();

/**

* 初始化三个blog

*/

esBlogRepository.save(new EsBlog("1", "段", "段朝旭"));

esBlogRepository.save(new EsBlog("2", "朝", "段朝旭"));

esBlogRepository.save(new EsBlog("3", "旭", "段朝旭"));

}

/**

* 分页查询博客去重

*

* @param title

* @param summary

* @param content

* @param pageable

* @return Page

*/

@Test

public void findDistinctEsBlogByTitleContaingOrSummaryContaingOrContentContaing() {

initRepositoryData();

Pageable pageable = PageRequest.of(0, 20);

Page page = esBlogRepository

.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining("1", "旭", "王", pageable);

System.out.println(page.getTotalElements());

for (EsBlog blog : page.getContent()) {

System.out.println(blog);

}

}

运行测试代码之后看到控制台打印出

说明执行成功。

4、编写controller层

@RestController

@RequestMapping("/blog")

public class EsBlogController {

@Autowired

private EsBlogRepository esBlogRepository;

@GetMapping

public List list(@RequestParam(value="title")String title,

@RequestParam(value="summary")String summary,

@RequestParam(value="content")String content,

@RequestParam(value="pageIndex",defaultValue="0")int pageIndex,

@RequestParam(value="pageSize",defaultValue="10")int pageSize){

Pageable pageable = PageRequest.of(pageIndex,pageSize);

Page page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(title,summary,content,pageable);

return page.getContent();

}

}

访问如图所示的地址,可看到返回的json格式数据

Elasticsearch Spring Spring Boot

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:leetcode】高频题目整理_栈篇( High Frequency Problems, Stack )
下一篇:【愚公系列】2022年05月 Docker容器 Windows11上Redis的安装
相关文章