SpringBoot 连接Elasticsearch带账号密码认证 ES连接 加密连接

发布于:2025-02-10 ⋅ 阅读:(63) ⋅ 点赞:(0)

依赖

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

配置文件

es:
  ip: 172.23.4.130
  port: 9200
  user: elastic
  password: qwertyuiop

读取配置文件类

@Component
@ConfigurationProperties(prefix = "es")
@Data
public class ElasticsearchProperties {
    private String ip;
    private int port;
    private String user;
    private String password;
}

配置类

@Configuration
@RequiredArgsConstructor
public class ElasticsearchConfig {
    private final ElasticsearchProperties elasticsearchProperties;
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        // 配置基本认证
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(
                new AuthScope(elasticsearchProperties.getIp(), elasticsearchProperties.getPort()),
                new UsernamePasswordCredentials(elasticsearchProperties.getUser(), elasticsearchProperties.getPassword())
        );

        RestClientBuilder builder = RestClient.builder(new HttpHost(elasticsearchProperties.getIp(), elasticsearchProperties.getPort(), "http"));
        builder.setHttpClientConfigCallback(httpClientBuilder -> {
            return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
        });
        // 创建并返回 RestHighLevelClient 实例
        return new RestHighLevelClient(builder);
    }
}

格式化工具

public class EsUtils {
    public static <T>List<T>  toList(SearchHit[] hits, Class<T> clazz) {
        List<T> retList = new ArrayList<>();
        for (SearchHit item : hits) {
            String json = item.getSourceAsString();  // 获取 JSON 字符串
            T obj = JSONUtil.toBean(json, clazz);    // 使用 Hutool 将 JSON 转换为对象
            retList.add(obj);
        }
        return retList;  // 返回结果列表
    }
    }

Controller

private final IGoodsService iGoodsService;

@GetMapping("/list")
public R list()   {//商品列表
    SearchHits hit =iGoodsService.listPage(getPage());
    List<Goods> list =EsUtils.toList(hit.getHits(), Goods.class);
    return R.page("获取成功", list,hit.getTotalHits().value);
    }

Service

 private final RestHighLevelClient client;
 private final String GOODS_INDEX ="goods";

/**
 * 商品列表
 * @param p 分页参数
 * @return
 */
@SneakyThrows
@Override
public SearchHits listPage(PageData p) {
    int page=(p.getPageNum()-1)*p.getPageSize();
    SearchRequest request =new SearchRequest(GOODS_INDEX);
    request.source().query(QueryBuilders.matchAllQuery());
    request.source().from(page).size(p.getPageSize());
    SearchResponse response=client.search(request, RequestOptions.DEFAULT);
    SearchHits hits =response.getHits();
    return hits;
}

网站公告

今日签到

点亮在社区的每一天
去签到