1.應(yīng)入相關(guān)依賴(lài)
// 添加 Spring Data Elasticsearch 的依賴(lài)
compile('org.springframework.boot:spring-boot-starter-data-elasticsearch')
// 添加 JNA 的依賴(lài)
compile('net.java.dev.jna:jna:4.3.0')
2.創(chuàng)建文檔實(shí)體
@Document(indexName = "blog",type = "blog")
public class EcBlog implements Serializable{
private static final long serialVersionUID = 1L;
@Id
private String id;
private String title;
private String content;
private String summary;
protected EcBlog(){
}
public EcBlog(String title, String content,String summary) {
this.title = title;
this.content = content;
this.summary = summary;
}
public EcBlog(String id, String title, String content,String summary) {
this.id = id;
this.title = title;
this.content = content;
this.summary = summary;
}
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 getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
@Override
public String toString() {
return String.format(
"User[id=%s, title='%s', content='%s']",
id, title, content);
}
}
3.編寫(xiě)Repository資源接口映九,繼承于ElasticsearchRepository接口,編寫(xiě)對(duì)應(yīng)方法findDistinctEcBlogByTitleOrContentContainingOrSummaryContaining(命名規(guī)則與sql同步)
public interface BlogRepository extends ElasticsearchRepository<EcBlog,String> {
/**
* 根據(jù)用戶名分頁(yè)查詢博客列表
* @param title
* @param content
* @param pageable
* @return
*/
Page<EcBlog> findDistinctEcBlogByTitleOrContentContainingOrSummaryContaining(String title, String content,String summary, Pageable pageable);
}
4.編寫(xiě)Controller層代碼
@RestController
@RequestMapping("/blogs")
public class BlogController {
@Autowired
private BlogRepository blogRepository;
@GetMapping
public List<EcBlog> blogList(@RequestParam(value = "title",required = false,defaultValue = "")String title,
@RequestParam(value = "content",required = false,defaultValue = "")String content,
@RequestParam(value = "summary",required = false,defaultValue = "")String summary,
@RequestParam(value = "pageIndex",required = false,defaultValue = "0")int pageIndex,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")int pageSize){
Pageable pageable = new PageRequest(pageIndex,pageSize);//Distinct
Page<EcBlog> page= blogRepository.findDistinctEcBlogByTitleOrContentContainingOrSummaryContaining(title, content,summary,pageable);
return page.getContent();
}
}
5.在application.properties配置文件中加入配置
# 內(nèi)嵌 Elasticsearch 實(shí)例墩剖。默認(rèn)存儲(chǔ)位置是工作目錄的 elastic 目錄
spring.data.elasticsearch.properties.path.home=target/elastic
# 設(shè)置連接超時(shí)時(shí)間
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s
注意:在運(yùn)行項(xiàng)目的時(shí)候善涨,本地必須已經(jīng)啟動(dòng)了elasticsearch,運(yùn)行在9300端口。執(zhí)行elasticsearch安裝路徑下bin文件夾中elasticsearch.bat。出現(xiàn)以下頁(yè)面表示啟動(dòng)已經(jīng)完成淮椰。
image.png
附上elasticsearch2.4.4的下載地址
http://www.elastic.co/downloads/past-releases/elasticsearch-2-4-4