SpringBoot2.3.4整合Elasticsearch7.6.2

    科技2025-11-13  9

    概述

    全文检索是程序员开发过程中常见的需求之一,开源的Elasticsearch是目前全文搜索引擎的首选,常用于快速存储、搜索和分析海量数据,Elasticsearch封装了Lucene,提供REST API操作接口,使用方便,本文介绍SpringBoot2.3.0整合Elasticsearch7.6.2,为了方便测试,持久层使用Mybatis-Plus,测试使用Swagger3.0。若需要了解SpringBoot整合Mybtis-Plus相关内容,请阅读另一篇SpringBoot2.3.0整合MyBatis-Plus3.4.0和Swagger3.0 springboot中访问elasticsearch有以下几种方式:

    JestClient:非官方,更新慢RestTemplate:模拟HTTP请求,ES很多操作需要自己封装,较麻烦HttpClient:同上Elasticsearch-Rest-Client:官方RestClient,封装了ES操作,API层次分明,上手简单

    引入相关依赖

    核心依赖如下:

    <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.6.2</version> </dependency>

    配置文件

    @Configuration public class ElasticsearchConfig { public static final RequestOptions COMMON_OPTIONS; static { RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); COMMON_OPTIONS = builder.build(); } @Bean public RestHighLevelClient restClient() { RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.108.11", 9200, "http"))); return client; } }

    业务层代码

    public DocWriteResponse.Result indexElasticsearchData(String index, List<SysUser> userList) { IndexRequest request = new IndexRequest(index); DocWriteResponse.Result result = null; try { for (SysUser user : userList) { request.id(String.valueOf(user.getId())); String esStr = JSON.toJSONString(user); request.source(esStr, XContentType.JSON); IndexResponse response = restHighLevelClient.index(request, ElasticsearchConfig.COMMON_OPTIONS); result = response.getResult(); } } catch (IOException e) { e.printStackTrace(); } return result; }

    控制层代码

    @PostMapping("/indexElasticsearchData") @ApiOperation(value = "将用户信息保存进es中") public AjaxResult indexElasticsearchData() throws IOException { List<SysUser> userList = userService.list(null); DocWriteResponse.Result result = userService.indexElasticsearchData("sysuser", userList); return AjaxResult.ok().data("result", result); }

    完整代码请参考码云地址

    Processed: 0.011, SQL: 9