ElasticSearch выдает 403 на PUT при запуске приложения с сервера, но работает при запуске на локальной машине - PullRequest
0 голосов
/ 14 ноября 2018

Я отправляю данные в ElasticSearch, используя RestTemplate:

 String elasticUrl = "localhost:9200/" + route + "/_bulk";
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<String> request = new HttpEntity<>(json,headers);
    LOG.info("Sendin data to elastic url: " + elasticUrl + "\n" + request.getBody());

    ResponseEntity<String> response;
    try{
         response = restTemplate.exchange(elasticUrl,HttpMethod.PUT,request,String.class);
         LOG.info("Response from elastic:\n" + response.getBody());
    }catch(Exception e ) {
        LOG.debug(e.getMessage());
    }

Эластика работает на удаленном сервере (у меня есть ssh туннель, поэтому я использую localhost).Это работает должным образом, однако, когда я развертываю приложение на сервере, где работает эластичный, это выдает

403 - Запрещено

Однако использование скручивания с этого сервера работает очень хорошо,Я не нашел никаких причин, почему API должен вести себя по-разному на локальном компьютере по сравнению с его развертыванием.В чем может быть причина такого поведения?

Если что-то испортилось в эластичной конфигурации, сгиб с сервера тоже не сработает.

Спасибо за помощь.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы забыли указать протокол в URL (http://).

  String elasticUrl = "http://localhost:9200/" + route + "/_bulk";

Если это не поможет, включите ведение журнала проводов, установив org.apache.http.wire в DEBUG и посмотрите, какие заголовки отправляются на сервер и каков точный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...