一、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
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<EsBlog, String> {
-
-
-
/**
-
* 分页查询博客去重
-
* @param title
-
* @param summary
-
* @param content
-
* @param pageable
-
* @return Page<EsBlog>
-
*/
-
Page<EsBlog> 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<EsBlog>
-
*/
-
@Test
-
public void findDistinctEsBlogByTitleContaingOrSummaryContaingOrContentContaing() {
-
-
initRepositoryData();
-
Pageable pageable = PageRequest.of(0, 20);
-
Page<EsBlog> 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<EsBlog> 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<EsBlog> page = esBlogRepository.findDistinctEsBlogByTitleContainingOrSummaryContainingOrContentContaining(title,summary,content,pageable);
-
return page.getContent();
-
-
}
-
-
}
访问如图所示的地址,可看到返回的json格式数据
文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31905135/article/details/80856073