👋 热爱编程的小伙伴们,欢迎来到我的编程技术分享公众号!在这里,我会分享编程技巧、实战经验、技术干货,还有各种有趣的编程话题!
❝Elasticsearch 是一个分布式搜索和分析引擎,广泛应用于全文搜索、日志分析和实时数据处理等场景。Spring Boot 提供了与 Elasticsearch 的无缝集成,使得开发人员能够更方便地构建基于 Elasticsearch 的应用程序。本教程将详细介绍如何在 Spring Boot 项目中集成 Elasticsearch,并提供完整的示例代码。
前置条件
在开始之前,请确保你已经安装和配置了以下环境:
JDK 8 或以上版本 Maven 3.6.0 或以上版本 Elasticsearch 7.x 版本
1. 创建 Spring Boot 项目
首先,通过 Spring Initializr 创建一个新的 Spring Boot 项目,添加以下依赖:
Spring Web Spring Data Elasticsearch
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2. 配置 Elasticsearch
在 application.yml
文件中添加 Elasticsearch 的配置:
spring:
elasticsearch:
uris: http://localhost:9200
username: elastic
password: elastic
3. 创建实体类
定义一个与 Elasticsearch 索引对应的实体类,并使用注解进行配置:
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Data
@Document(indexName = "product")
public class Product {
@Id
private String id;
private String name;
private Double price;
}
4. 创建 Repository 接口
创建一个继承 ElasticsearchRepository
的接口,用于与 Elasticsearch 进行交互:
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ProductRepository extends ElasticsearchRepository<Product, String> {
}
5. 编写服务层
在服务层中编写业务逻辑,使用 ProductRepository
完成对 Elasticsearch 的操作:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public Product saveProduct(Product product) {
return productRepository.save(product);
}
public Optional<Product> findProductById(String id) {
return productRepository.findById(id);
}
public Iterable<Product> findAllProducts() {
return productRepository.findAll();
}
public void deleteProductById(String id) {
productRepository.deleteById(id);
}
}
6. 创建控制器
在控制器中编写 API 接口,调用服务层的方法:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@PostMapping
public ResponseEntity<Product> createProduct(@RequestBody Product product) {
Product savedProduct = productService.saveProduct(product);
return ResponseEntity.ok(savedProduct);
}
@GetMapping("/{id}")
public ResponseEntity<Product> getProductById(@PathVariable String id) {
Optional<Product> product = productService.findProductById(id);
return product.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
}
@GetMapping
public ResponseEntity<Iterable<Product>> getAllProducts() {
Iterable<Product> products = productService.findAllProducts();
return ResponseEntity.ok(products);
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteProductById(@PathVariable String id) {
productService.deleteProductById(id);
return ResponseEntity.noContent().build();
}
}
7. 测试
启动 Spring Boot 应用程序,并使用 Postman 或其他工具测试 API 接口:
创建产品:POST http://localhost:8080/products

获取所有产品:GET http://localhost:8080/products

根据 ID 获取产品:GET http://localhost:8080/products/{id}

删除产品:DELETE http://localhost:8080/products/{id}

本文示例项目地址:https://gitee.com/zhyuu/study/tree/master/Springboot-Elasticsearch
结语
通过本文的教程,我们详细介绍了如何在 Spring Boot 项目中集成 Elasticsearch,并提供了完整的代码示例。这只是一个简单的入门示例,后续将会针对 Elasticsearch 做一些更深入的研究。希望这篇文章能够帮助你更好地理解和使用 Elasticsearch。
个人观点,仅供参考,非常感谢各位朋友们的支持与关注!
如果你觉得这个作品对你有帮助,请不吝点赞、在看,分享给身边更多的朋友。如果你有任何疑问或建议,欢迎在评论区留言交流。




