SpringBoot2.4.2集成elasticsearch7.8并实现索引与普通检索过程超简单

博主15年的时候已经在使用es,当时es版本是3.7,java框架是springMvc,很多配置都需要自行配置集成,并通过手写代码实现es接口查询功能。后通过springboot集成spring-data-elasticseach就简单多了,所有东西都是开箱即用,连N多配置都省了,好了下面直接进入主题集成过程:

  1. 安装es服务,我这里是安装的es7.8.1,springboo版本为2.4.2,安装过程不再说明,默认您已经完成es安装,es版本与springboot版本对应如下,如果版本不一致会有很多问题,无法满足开发需求:
    在这里插入图片描述
    2. POM文件中引入:
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

3. application.yml中引入es配置:

elasticsearch:
    rest:
      username:
      password:
      uris: http://192.168.8.229:9200

4.编写实体类,实体类对应一份索引:
在这里插入图片描述

5. 通过java硬编码方式增加测试索引数据:

  @Override
    public void addEntity(Object object){

        ZcInfor01Entity zcInfor01Entity = new ZcInfor01Entity();
        zcInfor01Entity.setSysGuid("0000000");
        zcInfor01Entity.setZc2003001("01010102");
        zcInfor01Entity.setZc2003002("abccccc");
        zcInfor01Entity.setZc2003003("ddddddddddd");
        zcInfor01Entity.setZc2003004("中文中文中文");
        zcInfor01Entity.setZc2003005("永文英文英文英文英文");
        zcInfor01Entity.setZc2003006("程序程序程序程序");

        elasticsearchRestTemplate.save(zcInfor01Entity);

    }

6. 设置查询条件、排序方式、高亮字段,实现查询功能:

 @Override
    public List<ZcInfor01Entity> getListByCondition(QueryEntityConditionVo queryEntityConditionVo) {
        //设置分页条件
        Integer pageIndex = queryEntityConditionVo.getPage() == 0 ? 1 : queryEntityConditionVo.getPage();
        Integer pageSize = queryEntityConditionVo.getSize() == 0 ? 10 : queryEntityConditionVo.getSize();
        Pageable pageable = PageRequest.of(pageIndex - 1, pageSize);
        //设置检索条件
        Sbuilders sbuilders = SearchBuilderFactory.createBuilders(SearchBuilderFactory.BUILDER_QUERY);
        BoolQueryBuilder queryBuilder = (BoolQueryBuilder)sbuilders.assembleBuilder(queryEntityConditionVo);
        //设置排序方式
        Sbuilders sortBuilders = SearchBuilderFactory.createBuilders(SearchBuilderFactory.BUILDER_SORT);
        SortBuilder termsSortBuilder = (SortBuilder) sortBuilders.assembleBuilder(queryEntityConditionVo);
        //设置高亮
        Sbuilders highBuilders = SearchBuilderFactory.createBuilders(SearchBuilderFactory.BUILDER_HIGHLIGHT);
        HighlightBuilder highlightBuilder = (HighlightBuilder)highBuilders.assembleBuilder(queryEntityConditionVo);

        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder().withQuery(queryBuilder).withPageable(pageable);
        if (termsSortBuilder != null) {
            nativeSearchQueryBuilder.withSort(termsSortBuilder);
        }
        if(queryEntityConditionVo.getIsHighLight() == IndexFieldConstant.IS_HIGHLIGHT_DEFAULT){
            nativeSearchQueryBuilder.withHighlightBuilder(highlightBuilder);
        }
        NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
        SearchHits<ZcInfor01Entity> hits = elasticsearchRestTemplate.search(searchQuery,ZcInfor01Entity.class);
        List<ZcInfor01Entity> list = new ArrayList<>();
        hits.getSearchHits().stream().forEach(entity->{
            list.add(entity.getContent());
        });
        return  list;
    }

7.POSTMAN测试接口查询数据:
在这里插入图片描述

主要就是1、2、3、4步骤为核心实现方式,后面的集成添加索引与各种查询可通过es官方文档查询相关的接口。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火焰蔷薇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值