返回
开箱即用,ElasticsearchRestTemplate在SpringBoot中的全能用法大公开
后端
2023-11-12 04:44:01
深入浅出,理解ElasticsearchRestTemplate
ElasticsearchRestTemplate是一个基于Spring RestTemplate的扩展,专门用于与Elasticsearch进行交互,大大简化了Elasticsearch的开发操作。
使用ElasticsearchRestTemplate,您可以轻松实现:
- 创建索引和文档 :只需编写少量代码,即可创建Elasticsearch索引并向其中添加文档。
- 搜索文档 :提供多种搜索方法,包括全文搜索、ID搜索、范围搜索和多条件搜索等,满足各种查询需求。
- 更新和删除文档 :通过简单的API调用,即可对Elasticsearch中的文档进行更新或删除操作。
立即上手,代码示例看这里
1. 导入依赖
首先,我们需要在项目中导入Elasticsearch RestTemplate的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>3.1.1</version>
</dependency>
2. 配置Elasticsearch
接下来,我们需要在application.yml文件中配置Elasticsearch的连接信息:
spring.elasticsearch.uris: http://localhost:9200
spring.elasticsearch.username: elastic
spring.elasticsearch.password: changeme
3. 创建ElasticsearchRestTemplate对象
在需要使用Elasticsearch的类中,我们可以通过注入的方式获取ElasticsearchRestTemplate对象:
@Autowired
private ElasticsearchRestTemplate elasticsearchTemplate;
4. 创建索引
CreateIndexRequest request = new CreateIndexRequest("my-index");
elasticsearchTemplate.createIndex(request);
5. 添加文档
IndexRequest request = new IndexRequest("my-index", "my-type", "1")
.source("{\"title\": \"Hello World\", \"content\": \"This is a test\"}");
elasticsearchTemplate.index(request);
6. 搜索文档
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("title", "Hello"))
.build();
SearchHits<Document> hits = elasticsearchTemplate.search(searchQuery, Document.class);
7. 高亮查询
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("title", "Hello"))
.withHighlightBuilder(HighlightBuilder.highlight())
.build();
SearchHits<Document> hits = elasticsearchTemplate.search(searchQuery, Document.class);
8. ID查询
GetQuery getRequest = new GetQuery("my-index", "my-type", "1");
Document document = elasticsearchTemplate.get(getRequest, Document.class);
9. 分页查询
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("title", "Hello"))
.withPageable(PageRequest.of(0, 10))
.build();
Page<Document> page = elasticsearchTemplate.search(searchQuery, Document.class);
10. 时间范围查询
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.rangeQuery("timestamp").from("2023-01-01").to("2023-01-31"))
.build();
SearchHits<Document> hits = elasticsearchTemplate.search(searchQuery, Document.class);
11. 多条件查询
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("title", "Hello"))
.must(QueryBuilders.matchQuery("content", "World")))
.build();
SearchHits<Document> hits = elasticsearchTemplate.search(searchQuery, Document.class);
结语
通过以上示例,您已经掌握了ElasticsearchRestTemplate的基本用法。赶快行动起来,在您的SpringBoot项目中集成Elasticsearch,让搜索功能如虎添翼吧!