SpringBoot整合ElasticSearch8

本文讨论了在SpringBoot中使用Elasticsearch的两种方法:官方提供的ElasticsearchJavaAPIClient和SpringDataElasticsearch。分别分析了它们的优缺点,以及如何在项目中集成和进行索引、搜索操作。
摘要由CSDN通过智能技术生成

        SpringBoot整合ES有两种方案,ES官方提供的Elasticsearch Java API Client [8.12] | Elastic和Spring官网提供的Spring Data Elasticsearch

​​​        两种方案各有优劣:

Spring:高度封装,用着比较舒服。缺点是更新不及时,有可能无法使用ES新的API

ES官方:更新即使,灵活,缺点是太灵活了,基本是一比一复制REST APIS,项目中使用需要二次封装。

        集成:在pom.xml中添加

<dependency>

        <groupId>co.elastic.clients</groupId>

        <artifactId>elasticsearch-java</artifactId>

        <version>8.12.2</version>

</dependency>

<!-- 如果有添加springmvc,此包可不引入 -->

<dependency>

         <groupId>com.fasterxml.jackson.core</groupId>

        <artifactId>jackson-databind</artifactId>

         <version>2.12.3</version>

 </dependency>

如果报错 ClassNotFoundException: jakarta.json.spi.JsonProvider,则还需要添加

<dependency>

         <groupId>jakarta.json</groupId>

        <artifactId>jakarta.json-api</artifactId>

         <version>2.0.1</version>

</dependency>

打印请求:

在application.yml中添加配置,打印 es 的 http 请求(建议在开发调试时使用)

logging:

  level:

    tracer: TRACE

连接ES:

@Configuration

public class ElasticSearchConfig {

        @Bean

         public ElasticsearchClient esClient() {

                 // ES服务器URL String serverUrl = "http://127.0.0.1:9200";

                // ES用户名和密码 String userName = "xxx";

                String password = "xxx";

                BasicCredentialsProvider credsProv = new BasicCredentialsProvider();                 credsProv.setCredentials( AuthScope.ANY, new                         UsernamePasswordCredentials(userName, password) );

                RestClient restClient = RestClient .builder(HttpHost.create(serverUrl))                         .setHttpClientConfigCallback(hc -> hc.setDefaultCredentialsProvider(credsProv))                         .build();

                ElasticsearchTransport transport = new RestClientTransport(restClient, new                         JacksonJsonpMapper());

                return new ElasticsearchClient(transport);

        } 

}

索引操作:

代码中的ESClient就是Elasticsearch,请自行注入bean

// 索引名字

String indexName = "book";

// 索引是否存在

BooleanResponse books = esClient.indices().exists(e -> e.index(indexName)); System.out.println("索引是否存在:" + books.value());

// 创建索引

esClient.indices().create(c -> c .index(indexName) .mappings(mappings -> mappings

 .properties("name", p -> p .text(t -> t ,index=false .index(false) ) ) .properties("age", p -> p .long_(t -> t) // long类型 ) ) );

// 删除索引

esClient.indices().delete(d -> d.index(indexName));

搜索:

// 搜索全部

SearchResponse<Account> searchResp = esClient.search(s -> s .index(indexName) .query(q -> q.matchAll(m -> m)) , Account.class );

HitsMetadata<Account> hits = searchResp.hits();

long totalValue = hits.total().value();

// 匹配到的数量

hits.hits().forEach(h -> {

        Account acc = h.source();  // 这就是得到的实体类

        acc.setId(h.id());

});

本文介绍了SpringBoot整合Elasticsearch的集成方案,但只是简单提及,更详细的方法需要自行查看官方文档。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值