Elasticsearch RestHighLevelClient за корпоративным брандмауэром через прокси

#elasticsearch

#elasticsearch

Вопрос:

Я пытаюсь получить доступ к установке cloud Elasticsearch из нашей сети, для которой требуется использовать прокси для внешних запросов. Это фрагмент кода, который я использую для передачи учетных данных Elasticsearch и настроек нашего прокси:

CredentialsProvider CredentialsProvider = new BasicCredentialsProvider(); CredentialsProvider.setCredentials(AuthScope.ЛЮБОЕ новое имя пользователя, пароль, учетные данные (elasticUser, elasticPassword));

RestClientBuilder restClientBuilder = RestClient.builder(новый HttpHost(имя хоста, порт, «https»)).setHttpClientConfigCallback(HttpClientBuilder -> HttpClientBuilder.setDefaultCredentialsProvider(CredentialsProvider)).setHttpClientConfigCallback(HttpClientBuilder -> HttpClientBuilder.SetProxy(новый HttpHost(proxyURL», proxyPort, «http»)));

Клиент RestHighLevelClient = новый RestHighLevelClient(restClientBuilder);

Это приводит к следующему ответу от ES:

«Исключение в потоке «main» ElasticsearchStatusException[Исключение Elasticsearch [тип = security_exception, причина = действие [индексы: данные / чтение / поиск] требуется проверка подлинности]]»

Похоже, что учетные данные Elasticsearch по какой-то причине не передаются.

Ответ №1:

должно было быть сделано так:

 RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(hostName, port, "https"))
    .setHttpClientConfigCallback(clientBuilder -> {
      clientBuilder.setDefaultCredentialsProvider(credentialsProvider);
      clientBuilder.setProxy(new HttpHost(proxyURL, proxyPort, "http"));
      return clientBuilder;
     });