SpringBoot--中间件技术-3:整合mongodb,整合ElasticSearch,附案例含代码(简单易懂)
warning:
这篇文章距离上次修改已过193天,其中的内容可能已经有所变动。
整合MongoDB和ElasticSearch的核心步骤如下:
- 引入Maven依赖
<!-- MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- ElasticSearch -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
- 配置MongoDB和ElasticSearch
spring:
data:
mongodb:
uri: mongodb://localhost:27017/mydb
elasticsearch:
rest:
uris: http://localhost:9200
- 定义实体类和Repository接口
// MongoDB Entity
@Document
public class Product {
@Id
private String id;
private String name;
// 省略其他字段和getter/setter方法
}
// MongoDB Repository
public interface ProductRepository extends MongoRepository<Product, String> {
}
// ElasticSearch Document
@Document(indexName = "product")
public class ProductDocument {
@Id
private String id;
private String name;
// 省略其他字段和getter/setter方法
}
// ElasticSearch Repository
public interface ProductSearchRepository extends ElasticsearchRepository<ProductDocument, String> {
}
- 服务层代码
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
@Autowired
private ProductSearchRepository productSearchRepository;
public Product createProduct(Product product) {
Product savedProduct = productRepository.save(product);
ProductDocument productDocument = new ProductDocument(savedProduct.getId(), savedProduct.getName());
productSearchRepository.save(productDocument);
return savedProduct;
}
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Optional<Product> getProductById(String id) {
return productRepository.findById(id);
}
public List<ProductDocument> searchProducts(String query) {
return productSearchRepository.search(queryBuilder -> queryBuilder.keyword()
.onFields("name"), PageRequest.of(0, 10)).getContent();
}
}
以上代码展示了如何在Spring Boot应用中整合MongoDB和ElasticSearch。通过定义实体类和相应的Repository接口,可以进行CRUD操作。服务层的ProductService
类中包含了创建产品、获取所有产品、通过ID获取产品以及搜索产品的方法。在搜索方法中,使用了ElasticSearch的查询构建器来构建搜索查询,并返回前10条结果。
评论已关闭