当前位置: 首页 > article >正文

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

依赖

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

http://www.kler.cn/a/532625.html

相关文章:

  • 接入DeepSeek大模型
  • 为AI聊天工具添加一个知识系统 之77 详细设计之18 正则表达式 之5
  • [创业之路-273]:《发现利润区》的主要内容与核心思想
  • Autosar-以太网是怎么运行的?(Davinci配置部分)
  • OpenGL学习笔记(六):Transformations 变换(变换矩阵、坐标系统、GLM库应用)
  • 【C++】P1765 手机
  • 7.2.背包DP
  • 获取 ARM Cortex - M 系列处理器中 PRIMASK 寄存器的值
  • Azure DevOps Server:集成奇安信开源卫士(OpenSourceSafe)
  • 16 旋转操作模块(rotation.rs)
  • napalm_ce 报错 No module named ‘netmiko.ssh_exception‘ 解决方案(随手记)
  • 17 形状边缘偏移量模块(side_offsets.rs)
  • git-secret 使用教程
  • JVM- 垃圾回收算法
  • Leetcode922: 按奇偶排序数组 II
  • [Go]一、Go语言基础
  • 基于 docker 的mysql 5.7 主主集群搭建
  • fpga系列 HDL:XILINX Vivado ZYNQ-7000 PS-PL数据交互 AXI4 实现笔记
  • ros 发布Topic
  • 【力扣】238.除自身以外数组的乘积
  • Rust HashMap :当储物袋遇上物品清单
  • 基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发(BLE HID+CapSense)
  • ELF2开发板(飞凌嵌入式)搭建深度学习环境部署(RKNN环境部署)
  • 4种架构的定义和关联
  • 数据结构——并查集
  • 【单层神经网络】softmax回归的从零开始实现(图像分类)