- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
- 使用
2.1 基础配置
spring.elasticsearch.rest.uris=http://192.168.1.122:9200
2.1 创建实体对象
import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import java.io.Serializable;
/**
* @title 文章
* @Desc
* @author <a href="mailto:avaos.wei@gmail.com">avaos.wei</a>
* @Date 2020-03-26 16:48
*
*/
@Data
@Document(indexName = "blog", type = "article")
public class Article implements Serializable {
private long id;
private String title;
private String summary;
private String content;
private int pv;
}
2.2 创建Repository对象
import cn.avaos.domain.Article;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
/**
* @title 概述
* @Desc 描述
* @author <a href="mailto:avaos.wei@gmail.com">avaos.wei</a>
* @Date 2020-03-26 21:53
*
*/
@Repository
public interface ArticleRepository extends ElasticsearchRepository<Article, Long> {
}
2.3 创建Controller
import cn.avaos.domain.Article;
import cn.avaos.repository.ArticleRepository;
import cn.avaos.web.domain.JsonData;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @title 概述
* @Desc 描述
* @author <a href="mailto:avaos.wei@gmail.com">avaos.wei</a>
* @Date 2020-03-26 18:00
*
*/
@Slf4j
@RestController
@RequestMapping("/api/article")
public class ArticleController {
@Autowired
private ArticleRepository articleRepository;
@PostMapping(path = "/save")
public JsonData save(@RequestBody Article article){
articleRepository.save(article);
return JsonData.ok();
}
@GetMapping(path = "/search")
public JsonData search(@RequestParam String title){
QueryBuilder qb = QueryBuilders.matchQuery("title", title);
Iterable<Article> list = articleRepository.search(qb);
return JsonData.ok(list);
}
}
- 测试
3.1 添加
POST /api/article/save
{
"id": 2,
"title": "SpringBoot整合ElasticSearch2",
"summary": "test2",
"content": "这是测试2",
"pv": 66
}
3.2 查询
GET /api/article/search?title=SpringBoot
注意:SpringBoot引入的ElasticSearch版本要与安装的ElasticSearch版本一致