Java使用Springboot集成Es官方推荐(RestHighLevelClient)

SpringBoot集成ElasticSearch的四种方式(主要讲解ES官方推荐方式)


  • TransportClient:这种方式即将弃用 官方将在8.0版本彻底去除
  • Data-Es:Spring提供的封装的方式,由于是Spring提供的,所以每个SpringBoot版本对应的ElasticSearch,具体这么个对应的版本,自己去官网看
  • ElasticSearch SQL:将Elasticsearch的Query DSLSQL转换查询,早期有一个第三方的插件Elasticsearch-SQL,后来随着官方也开始做这方面,这个插件好像就没怎么更新了,有兴趣的可以查看https://www.cnblogs.com/jajian/p/10053504.html
  • Rest Client:官方推荐使用,所以我们采用这个方式,这个分为两个Low Level REST Client和High Level REST Client,Low Level REST Client是早期出的API比较简陋了,还需要自己去拼写Query DSL,High Level REST Client使用起来更好用,更符合面向对象的感觉,我们下面使用High Rest Client

注意:我使用的是ES7.6.1版本,等会pom文件依赖时,版本必须与之对应

1.创建Maven项目
2.导入pom依赖
<dependencies>
    <!--SpringBoot集成Es的包-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <!--springbootweb包-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--lombok插件-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!--test测试包-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!--json序列化包-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.1.15</version>
    </dependency>
</dependencies>

pom导包完成后、需要点开Maven查看引入的elasticsearch-rest-high-level-client的版本是否与你的ElasticSearch版本一致

在这里插入图片描述

如果不一致需要自己去控制版本(如下代码)

<properties>
    <java.version>1.8</java.version>
    <!--这里是你的es的版本-->
    <elasticsearch.version>7.6.1</elasticsearch.version>
</properties>
3.SpringBoot项目的启动类编写(忽略)
4.编写配置类(RestHighLevelClient)
// 表示这是一个配置类
@Configuration
public class RestElasticSearchClientConfig {
   
    // 将方法的返回结果交给spring管理
    @Bean
    public RestHighLevelClient restHighLevelClient(){
   
        // 主机ip和端口号以及协议
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(
                new HttpHost("localhost", 9200, "http")));
        return restHighLevelClient;
    }
}

到这里我们RestHighLevelClient的配置就做完了

5.测试(使用RestHighLevelClient的Api)

编写测试类,在类中自动注入RestHighLevelClient对象

在这里插入图片描述

6.RestHighLevelClient的Api使用(关于索引)
6.1 简单索引的创建
// 测试索引的创建(不带mapping,ElasticSearch默认会根据你的添加的文档来创建mapping)
@Test
void testCreateIndex() throws IOException {
   
    // 创建索引的请求
    CreateIndexRequest nan_index = new CreateIndexRequest("nan_index");
    // client执行请求
    CreateIndexResponse response = restHighLevelClient.indices().create(nan_index, RequestOptions.DEFAULT);
    System.out.println(response);
}
6.2自定义mapping创建索引
// 带上自定义的mapping来创建索引
@Test
void testCreateMappingIndex() throws IOException {
   
    // 创建索引的请求
    CreateIndexRequest indexRequest = new CreateIndexRequest
  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的!这里给您提供一个简单的 Spring Boot 集成 Elasticsearch 客户端的样例。 首先,您需要在 `pom.xml` 中添加 Elasticsearch 客户端的依赖: ```xml <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.14.0</version> </dependency> ``` 然后,在 `application.properties` 中配置 Elasticsearch 的连接信息: ``` spring.data.elasticsearch.cluster-name=my-cluster-name spring.data.elasticsearch.cluster-nodes=localhost:9300 ``` 在 Spring Boot 应用中,您可以通过注入 `RestHighLevelClient` 对象来使用 Elasticsearch 客户端。例如,在一个 `@Service` 类中,您可以这样使用 Elasticsearch 客户端进行查询: ```java @Service public class MyService { @Autowired private RestHighLevelClient client; public void search() throws IOException { SearchRequest searchRequest = new SearchRequest("my-index"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchQuery("title", "spring boot")); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); // 处理查询结果 } } ``` 这里的 `RestHighLevelClient` 是 Elasticsearch 客户端提供的高级 REST 客户端,可以方便地进行查询、索引、删除等操作。其中,`SearchRequest` 表示查询请求,`SearchSourceBuilder` 表示查询条件构建器,`QueryBuilders.matchQuery` 表示构建一个匹配查询,查询条件是 `title` 字段匹配关键字 `"spring boot"`。查询结果会被封装在 `SearchResponse` 中,您可以根据自己的需求对其进行处理。 希望这个样例能够对您有所帮助!如果您还有其他问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值