ElasticSearch集成SpringBoot

上一篇介绍了JavaAPI来操作ES,虽然易用,但是如果操作大量的数据并且程序相对复杂,那么会有大量冗余的代码和API操作,SpringBoot作为轻量级易用框架自然也帮我们封装好了各种API操作,只需要操作数据库一样操作ES即可,一起看看吧

代码已上传Github: https://github.com/chenliang15405/common-study/tree/main/es-spring

Maven依赖

  • pom.xml中增加依赖

    <!--  elasticsearch 依赖      -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    

    添加elasticsearchstarter依赖即可,减少很多配置代码,springboot已经内置了很多配置

  • properties配置

    配置文件中只需要增加elasticsearch的连接配置即可

    # es服务地址
    elasticsearch.host=127.0.0.1
    # es服务端口
    elasticsearch.port=9200
    

ElasticSearch配置

前置配置
  • 增加ElasticSearch与Spring配置

    将需要使用的RestHighLevelClient客户端Bean,注入到Spring中,由Spring管理

    // 这里指定的就是配置文件中配置的名称的前缀,将配置文件中的配置自动注入到bean中
    @ConfigurationProperties(prefix = "elasticsearch")
    @Configuration
    @Data  // 注意这里使用了lombok,如果去掉该注解,需要给host和port增加getter/setter
    public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {
         
    
        private String host;
        private Integer port;
    
        /**
         * 返回ESClient对象
         */
        @Override
        public RestHighLevelClient elasticsearchClient() {
         
            RestClientBuilder builder = RestClient.builder(new HttpHost(host, port));
            RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
            return restHighLevelClient;
        }
    
    }
    
  • 增加Repository

    与操作Database一样,需要增加接口,并且继承``ElasticsearchRepository类,那么Spring`在启动的时候就会自动扫描该类,通过动态代理相应的实现类,可以直接使用内置的相关方法,高效!

    @Repository
    public interface ProductDao extends ElasticsearchRepository<Product, Long> {
         
    }
    

    使用方式与Spring提供的方式基本一致,无论是Database还是Es或者MongoDB,基本都是一致的方式

索引操作

  • 配置索引Bean

    通过注解可以直接将Bean中的字段和ES中的索引字段进行映射,后续直接操作Bean就可以操作ES中的索引,非常的方便。

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Document(indexName = "product", shards = 3, replicas = 1) // 索引名称, 主分片数量 -> 就是将数据分配到多个分片中,不保存在一个分片(节点), replicas:副本的数量,每个主分片都会创建这么多的副本数量
    public class 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值