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

server/2025/2/5 17:52:00/

依赖

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

配置文件

es:ip: 172.23.4.130port: 9200user: elasticpassword: qwertyuiop

读取配置文件类

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

配置类

java">@Configuration
@RequiredArgsConstructor
public class ElasticsearchConfig {private final ElasticsearchProperties elasticsearchProperties;@Beanpublic 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);}
}

格式化工具

java">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

java">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

java"> 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;
}

http://www.ppmy.cn/server/165195.html

相关文章

第七章:婴变-React字典功能实战

字典查询 字典查询功能实现import { Component, ReactNode } from "react"; import { Button, Popconfirm, Table, message, Input, Space,Tag } from "antd"; import { instance } from "../../utils/request"; import {SettingOutlined,Search…

腾讯云 AI 代码助手编程挑战赛 + 构建开发板垃圾图片识别AI对话的Copilot

一、前言&#xff1a; 最近公司有一个项目需求需要使用到AI智能识别的功能《垃圾智能AI识别系统》&#xff0c;本人一直从事Web领域开发工作&#xff0c;也没接触过人工智能这个赛道&#xff0c;刚好现在借这个“腾讯云 AI 代码助手编程挑战赛”来了解一下AI写代码相关的流程。…

Unity飞行代码 超仿真 保姆级教程

本文使用Rigidbody控制飞机&#xff0c;基本不会穿模。 效果 飞行效果 这是一条优雅的广告 如果你也在开发飞机大战等类型的飞行游戏&#xff0c;欢迎在主页搜索博文并参考。 搜索词&#xff1a;Unity游戏(Assault空对地打击)开发。 脚本编写 首先是完整代码。 using System.Co…

npm知识

npm 是什么 npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表&#xff0c;每星期大约有 30 亿次的下载量&#xff0c;包含超过 600000 个包&#xff08;package&#xff09;&#xff08;即&#xff0c;代码模块&#xff09;。来自…

三路排序算法

三路排序算法 引言 排序算法是计算机科学中基础且重要的算法之一。在数据分析和处理中&#xff0c;排序算法的效率直接影响着程序的执行速度和系统的稳定性。本文将深入探讨三路排序算法&#xff0c;包括其原理、实现和应用场景。 一、三路排序算法的原理 三路排序算法是一…

STM32 ADC

stm32单片机- ADC-技术详细解程序示范&#xff08;FREERTOSHAL多通道DMA&#xff09; - 知乎 (zhihu.com) 记录自己的嵌入式学习之路-CSDN博客 【STM32】ADC_stm32 adc-CSDN博客 STM32——ADC篇&#xff08;ADC的使用&#xff09;_stm32 adc-CSDN博客 【STM32 ADC】-CSDN博客…

Linux02——Linux的基本命令

目录 ls 常用选项及功能 综合示例 注意事项 cd和pwd命令 cd命令 pwd命令 相对路径、绝对路径和特殊路径符 特殊路径符号 mkdir命令 1. 功能与基本用法 2. 示例 3. 语法与参数 4. -p选项 touch-cat-more命令 1. touch命令 2. cat命令 3. more命令 cp-mv-rm命…

vue3 store刷新失效场景解决方案

1. 安装 vuex-persistedstate 插件 vuex-persistedstate 是一个常用的插件&#xff0c;可以方便地将 Vuex 状态持久化到 localStorage 或 sessionStorage 中 npm install vuex-persistedstate2. 配置 Vuex Store 使用 sessionStorage // store/index.js import { createStore }…