spring boot 3.2 使用 restclient 使用 ReactorNettyClientRequestFactory 作为请求创建工厂 忽略SSL

public class RestClientUtils {
    private static volatile RestClient restClient = null;
    final static TrustManager TRUST_ALL_CERTS = new X509TrustManager() {
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[]{};
        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) {
            log.info("all trusted");
        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) {
            log.info("no need to Trusted");
        }
    };

    static {
        SslContext sslContext = null;
        try {
            sslContext = SslContextBuilder.forClient().trustManager(TRUST_ALL_CERTS).build();
        } catch (SSLException e) {
            throw new RuntimeException(e);
        }
        SslProvider build = SslProvider.builder().sslContext(sslContext).build();
        restClient = RestClient
                .builder()
                .requestFactory(new ReactorNettyClientRequestFactory(HttpClient.create().secure(build)))
//                .baseUrl("https://"+myIp)
                .build();
    }
    public RestClientUtils() {


    }
// get 请求示例
public static JSONObject get(String urlString,String header) {
    log.info("执行get请求>>url为{}请求头为{}",urlString,header);
    return restClient
            .get()
            .uri(urlString)
            .headers(httpHeaders -> httpHeaders.add(HttpHeaders.AUTHORIZATION,header))
            .retrieve()
            .body(JSONObject.class);
}
/**
 * @param urlString   请求URL
 * @param body        post请求 body
 * @param authHeaders 请求头参数
 * @return
 */
public static JSONObject jsonPostHeader(String urlString, JSONObject body, String authHeaders) {
    log.info("执行jsonPost请求>>url为{}请求体为{},请求头为{}",urlString,body,authHeaders);
    return restClientGo(urlString,HttpMethod.POST,MediaType.APPLICATION_JSON,body,Map.of(HttpHeaders.AUTHORIZATION,authHeaders));
}
public static JSONObject restClientGo(String urlString, HttpMethod httpMethod, MediaType mediaType,JSONObject body,Map<String, String>  headers) {
    log.info("执行restClientGo请求>>url为{}请求体为{}",urlString,body);
    return restClient
            .method(httpMethod)
            .uri(urlString)
            .headers(httpHeaders -> headers.forEach(httpHeaders::add))
            .accept(mediaType)
            .body(body)
            .retrieve()
            .onStatus(HttpStatusCode::is4xxClientError, (request, response) -> {
                throw new ProfileBusinessException(response.getStatusCode().value(), response.getStatusText());
            })
            .onStatus(HttpStatusCode::is5xxServerError, (request, response) -> {
                throw new ProfileBusinessException(response.getStatusCode().value(), response.getStatusText());
            })
            .body(JSONObject.class);
}
}

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot使用Elasticsearch的KNN算法进行查询,需要进行以下步骤: 1. 首先,在Spring Boot项目中引入Elasticsearch的相关依赖,例如: ``` <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.10.2</version> </dependency> ``` 2. 创建一个Elasticsearch的RestHighLevelClient,例如: ``` @Bean public RestHighLevelClient elasticsearchClient() { RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); RestHighLevelClient client = new RestHighLevelClient(builder); return client; } ``` 3. 构建一个KNN查询请求,例如: ``` KNNQueryBuilder knnQueryBuilder = new KNNQueryBuilder("my_vector_field", new float[]{1.0f, 2.0f, 3.0f}) .k(10) .modelType("cosine"); ``` 其中,"my_vector_field"是保存向量数据的字段名,new float[]{1.0f, 2.0f, 3.0f}是查询向量数据,k是查询结果数,modelType是距离计算方式。 4. 发送KNN查询请求,例如: ``` SearchRequest searchRequest = new SearchRequest("my_index"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(knnQueryBuilder); searchSourceBuilder.size(10); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT); ``` 其中,"my_index"是要查询的索引名,searchSourceBuilder.size(10)是设置查询结果数。 5. 处理KNN查询结果,例如: ``` SearchHits hits = searchResponse.getHits(); for (SearchHit hit : hits) { String id = hit.getId(); float score = hit.getScore(); Map<String, Object> sourceAsMap = hit.getSourceAsMap(); // 处理查询结果 } ``` 以上就是在Spring Boot使用Elasticsearch的KNN算法进行查询的基本步骤。需要注意的是,使用KNN算法需要在Elasticsearch中安装k-NN插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值