实现一个springboot整合es的案例
时间: 2024-03-09 11:20:24 浏览: 59
springboot整合示例
好的,下面是一个简单的 Spring Boot 整合 Elasticsearch 的案例。
首先,我们需要在 pom.xml 中添加 Elasticsearch 和 Spring Data Elasticsearch 相关的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.10.1</version>
</dependency>
```
接着,在 application.properties 中配置 Elasticsearch 的连接信息:
```properties
spring.elasticsearch.rest.uris=http://localhost:9200
```
然后,我们可以创建一个实体类作为 Elasticsearch 索引的映射:
```java
@Document(indexName = "article", shards = 1, replicas = 0)
public class Article {
@Id
private String id;
private String title;
private String content;
// getter and setter
}
```
在这个实体类中,我们使用了 `@Document` 注解来指定 Elasticsearch 索引的名称、分片数和副本数。同时,我们也使用了 `@Id` 注解来指定实体类的主键。
接着,我们可以创建一个 Elasticsearch 的 Repository 接口:
```java
public interface ArticleRepository extends ElasticsearchRepository<Article, String> {
}
```
在这个接口中,我们继承了 `ElasticsearchRepository` 接口,并指定了实体类的类型和主键类型。
最后,我们可以在 Controller 中使用 ArticleRepository 来操作 Elasticsearch:
```java
@RestController
@RequestMapping("/articles")
public class ArticleController {
@Autowired
private ArticleRepository articleRepository;
@GetMapping("/{id}")
public Article getArticle(@PathVariable String id) {
return articleRepository.findById(id).orElse(null);
}
@PostMapping
public Article saveArticle(@RequestBody Article article) {
return articleRepository.save(article);
}
@DeleteMapping("/{id}")
public void deleteArticle(@PathVariable String id) {
articleRepository.deleteById(id);
}
}
```
在这个 Controller 中,我们使用了 `@Autowired` 注解来注入 ArticleRepository。然后,我们可以使用 ArticleRepository 的方法来操作 Elasticsearch 索引。
以上就是一个简单的 Spring Boot 整合 Elasticsearch 的案例。
阅读全文