返回

开箱即用,ElasticsearchRestTemplate在SpringBoot中的全能用法大公开

后端

深入浅出,理解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,让搜索功能如虎添翼吧!