在Spring Cloud学习系列中,我们已经介绍了Elasticsearch的基本概念和安装配置。在这一部分中,我们将使用Spring Data Elasticsearch来实现分布式搜索功能。
首先,我们需要在Spring Boot项目中添加Spring Data Elasticsearch的依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!-- 其他依赖 -->
</dependencies>
接下来,我们需要配置Elasticsearch的客户端。
@Configuration
public class ElasticsearchConfig {
@Value("${elasticsearch.host}")
private String hostname;
@Value("${elasticsearch.port}")
private int port;
@Bean
public RestHighLevelClient elasticsearchClient() {
RestClientBuilder builder = RestClient.builder(new HttpHost(hostname, port));
return new RestHighLevelClient(builder);
}
}
然后,我们可以创建一个Elasticsearch的Repository接口。
public interface ProductRepository extends ElasticsearchRepository<Product, String> {
}
最后,我们可以使用这个Repository来执行搜索操作。
@Service
public class ProductSearchService {
@Autowired
private ProductRepository productRepository;
public List<Product> searchByName(String name) {
return productRepository.findByName(name);
}
}
在这个例子中,我们定义了一个简单的搜索方法searchByName
,它使用了Elasticsearch的Repository提供的查询方法findByName
。这个方法会在Elasticsearch中搜索所有名称字段包含指定关键字的文档。
这只是一个基本的例子,实际应用中可能需要更复杂的查询逻辑,例如基于多个字段的搜索、分页、排序等。Spring Data Elasticsearch提供了丰富的查询方法定义,可以通过定义相应的接口来实现复杂的搜索需求。