下面我将为你详细讲解springboot如何整合Elasticsearch的完整攻略。
环境准备
首先,我们需要安装好Elasticsearch和Java开发环境。具体安装方法可以参考Elasticsearch官方文档和Java官方文档。此外,我们还需要添加Elasticsearch依赖到我们的Spring Boot项目中。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.13.2</version>
</dependency>
Elasticsearch客户端配置
我们需要先在application.yml
中添加Elasticsearch的配置信息。
spring:
data:
elasticsearch:
cluster-name: elasticsearch
cluster-nodes: localhost:9300
在这里,我们指定了Elasticsearch集群的名称为elasticsearch
,连接地址为localhost:9300
。
创建索引
在使用Elasticsearch之前,我们需要先创建一个索引。这里我们以商品搜索为例创建一个名为product
的索引。
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.stereotype.Service;
@Service
public class ProductService {
private final ElasticsearchOperations elasticsearchOperations;
@Autowired
public ProductService(RestHighLevelClient client) {
this.elasticsearchOperations = new ElasticsearchRestTemplate(client);
}
public void createIndex() {
elasticsearchOperations.indexOps(Product.class).create();
}
}
上述代码中,我们使用Spring Data Elasticsearch提供的ElasticsearchOperations
和ElasticsearchRestTemplate
来创建索引。具体来说,我们在createIndex
方法中使用indexOps
方法获取IndexOperations
对象,然后调用create
方法即可创建索引。这里需要注意的是,我们需要在Product
类上加上@Document
注解,来指定对象如何映射到Elasticsearch中的文档。
增删改查
完成了索引的创建后,我们就可以开始使用Elasticsearch进行增删改查操作了。下面,我将介绍两个示例操作。
保存商品
public void saveProduct(Product product) {
IndexQuery indexQuery = new IndexQueryBuilder()
.withIndexName("product")
.withObject(product)
.build();
elasticsearchOperations.index(indexQuery);
}
上述代码中,我们使用IndexQueryBuilder
来创建IndexQuery
对象,并指定了要保存到的索引名为product
,保存的对象为product
。最后使用elasticsearchOperations.index
方法将其保存到Elasticsearch中。
搜索商品
public List<Product> searchProducts(String query) {
QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", query);
CriteriaQuery criteriaQuery = new CriteriaQuery(queryBuilder);
criteriaQuery.setPageable(PageRequest.of(0, 10));
SearchHits<Product> searchHits = elasticsearchOperations.search(criteriaQuery, Product.class);
return searchHits.stream().map(SearchHit::getContent).collect(Collectors.toList());
}
上述代码中,我们使用QueryBuilder
创建了一个基于name
字段的查询条件,指定了要查询的关键词为query
。然后通过Spring Data Elasticsearch提供的CriteriaQuery
对象来封装查询条件,可以指定分页等属性。最后使用elasticsearchOperations.search
方法执行搜索操作。搜索结果是通过SearchHits
对象返回的,需要我们再将其转化为Product
对象的列表。
至此,整合Elasticsearch的攻略就全部讲解完毕了。希望能对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何整合elasticsearch - Python技术站