# es
**Repository Path**: SunPeng-3/es
## Basic Information
- **Project Name**: es
- **Description**: Springboot和Elasticsearch 整合
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-11-28
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# es
#### 项目介绍
Springboot和Elasticsearch 整合
#### 软件架构
**Springboot、给本地安装 elasticsearch-6.5.1 windows版本的**
**解压以后 **

**双击 elasticsearch.bat 启动就可以后续的工作了 **
**- 1. 第一步骤 配置 pom.xml 加入Elasticsearch 相关的依赖jar**
```
org.springframework.boot
spring-boot-starter-data-elasticsearch
net.java.dev.jna
jna
4.3.0
```
**- 2. 第二步骤 配置 application.properties **
```
#设置端口
server.port=80
# 设置 elasticsearch 服务地址
spring.data.elasticsearch.cluster-nodes=localhost:9300
# 设置 elasticsearch 连接超时时间
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s
```
**- 3. 第三步骤 创建 文档类 **
```
package com.belle.springbootelasticsearch.domain;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import java.io.Serializable;
/**
* @ClassName EsBlog
* @Description Es 文档类
* @Author sunp
* @Date 2018/11/28 14:17
* @Version 0.0.1
**/
@Document(indexName = "blog",type = "blog") //标识 文档
public class EsBlog implements Serializable {
@Id //标识主键
private String id;
//标题
private String title;
//摘要
private String summary;
//正文内容
private String content;
protected EsBlog(){ //JPA 规范要求,防止直接使用
}
public EsBlog( String title,String summary, String content){
this.title = title;
this.summary = summary;
this.content = content;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "EsBlog{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", summary='" + summary + '\'' +
", content='" + content + '\'' +
'}';
}
}
```
**- 4. 第四步骤 创建Es Repository 资源库 接口 **
```
package com.belle.springbootelasticsearch.repository;
import com.belle.springbootelasticsearch.domain.EsBlog;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
/**
* @ClassName EsBlogRepository
* @Description Es Repository 资源库 接口
* @Author sunp
* @Date 2018/11/28 14:18
* @Version 0.0.1
**/
public interface EsBlogRepository extends ElasticsearchRepository {
/**
* 分页查询博客(去重)
* @param title
* @param summary
* @param content
* @param pageable
* @return
*/
Page findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(String title, String summary, String content, Pageable pageable);
}
```
**- 5. 第五步骤 创建SpringbootElasticsearchApplicationTests 测试类测试 **
```
package com.belle.springbootelasticsearch;
import com.belle.springbootelasticsearch.domain.EsBlog;
import com.belle.springbootelasticsearch.repository.EsBlogRepository;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootElasticsearchApplicationTests {
@Autowired
private EsBlogRepository esBlogRepository;
@Before
public void initRepository(){
//清除所有数据
esBlogRepository.deleteAll();
//初始化数据
esBlogRepository.save(new EsBlog("登黄鹤楼","王之涣的登黄鹤楼","白日依山尽,黄河入海流,欲穷千里目,更上一层楼。"));
esBlogRepository.save(new EsBlog("相思","王维的相思","红豆生南国,春来发几枝,愿君多采撷,此物最相思。"));
esBlogRepository.save(new EsBlog("静夜思","李白的静夜思","床前明月光,疑是地上霜。举头望明月,低头思故乡。"));
}
@Test
public void contextLoads() {
Pageable pageable = new PageRequest(0,20);
String title = "思";
String summary = "相思";
String content = "相思";
Page page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(title,summary,content,pageable);
for (EsBlog blog : page.getContent()){
System.out.println(blog.toString());
}
}
}
```
**- 6. 第六步骤 查看测试结果 **

**- 7. 第七步骤 创建controller 外部调用接口 **
```
package com.belle.springbootelasticsearch.controller;
import com.belle.springbootelasticsearch.domain.EsBlog;
import com.belle.springbootelasticsearch.repository.EsBlogRepository;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @ClassName ElasticSearchController
* @Description ES 学习
* @Author sunp
* @Date 2018/11/28 14:16
* @Version 0.0.1
**/
@RestController
@RequestMapping("/es")
public class ElasticSearchController {
@Autowired
private EsBlogRepository blogRepository;
@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 = new PageRequest(pageIndex,pageSize);
Page page = blogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(title, summary, content, pageable);
return page.getContent();
}
}
```
**- 8. 第八步骤 用Postman 查询调用结果 **
