【问题标题】:java highlevel rest client connection is giving ssl errorjava 高级别的客户端连接给出 ssl 错误
【发布时间】:2020-09-16 17:09:42
【问题描述】:

我有一段时间收到以下错误,无法获得搜索结果。

 2020-05-26 16:03:30.207 ERROR [default task-284][SearchMVCAction:148]
 exception in getting response java.io.IOException: Unrecognized SSL
 message, plaintext connection? 
 at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:954)
 at org.elasticsearch.client.RestClient.performRequest(RestClient.java:229)

我的代码如下。

try{
    RestClientBuilder builder = SearchResultsUtil.getRestClientBuilder();
    RestHighLevelClient esClient = new RestHighLevelClient(builder);
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.timeout(new TimeValue(600, TimeUnit.SECONDS)); // Request timeout
    sourceBuilder.from(pagenumber);
    sourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC)); //Result set ordering
    BoolQueryBuilder query = new BoolQueryBuilder();
         query.must(QueryBuilders.queryStringQuery("*"+searchWildKeyword+"*").field("content").field("title",10.0f).field("description").lenient(true).escape(true).analyzeWildcard(true).fuzziness(Fuzziness.ZERO).defaultOperator(Operator.OR).boost(1.0f));
    sourceBuilder.query(query);
    SearchRequest searchRequest = new SearchRequest(esIndice);
    searchRequest.source(sourceBuilder);
    SearchResponse searchResponse  = esClient.search(searchRequest, RequestOptions.DEFAULT);
    SearchHits hits = searchResponse.getHits();
    System.out.println("results:"+hits);
    }catch (Exception e) {
        _log.error("Exception Getting Response",e);

    }finally {
        _log.info("inside finally block");
        esClient.close();
    }

我也试过 flush() 但没有运气。

finally {
    _log.info("inside finally block");
    esClient.close();
    esClient.indices().flush(new FlushRequest(esIndice), RequestOptions.DEFAULT);
}

请帮助可能是什么原因,我正在使用 ES 9200 porthttps protocol

【问题讨论】:

    标签: java elasticsearch ssl resthighlevelclient


    【解决方案1】:

    您将不得不稍微重构您的代码。请在下面找到有关 RestHighLevelClient 的工作示例。

        @Bean
    public RestHighLevelClient elasticRestClient () {
        String[] httpHosts = httpHostsProperty.split(";");
        HttpHost[] httpHostsAsArray = new HttpHost[httpHosts.length];
        int index = 0;
    
        for (String httpHostAsString : httpHosts) {
            HttpHost httpHost = new HttpHost(httpHostAsString.split(":")[0], new Integer(httpHostAsString.split(":")[1]), "http");
            httpHostsAsArray[index++] = httpHost;
        }
    
        RestClientBuilder restClientBuilder = RestClient.builder(httpHostsAsArray)
                .setRequestConfigCallback(builder -> builder
                        .setConnectTimeout(connectTimeOutInMs)
                        .setSocketTimeout(socketTimeOutInMs)
                );
    
        return new RestHighLevelClient(restClientBuilder);
    }
    

    以及使用 RestHighLevelClient 的类:

        @Autowired
    private RestHighLevelClient restClient;
    
            IndexResponse indexResponse = restClient.index(indexRequest, RequestOptions.DEFAULT);
    

    【讨论】:

    • 我遇到了这个问题,它已经解决了。我上面的代码完全可以工作.. 唯一的问题是节点 xpack.security.http.ssl.enabled: true 属性设置为 false 之一。设置为 true 后,我没有收到此错误。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2015-06-13
    • 2011-01-15
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多