我正在使用RestTemplate将数据发布到ElasticSearch:
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());
}
elastic在远程服务器上运行(我有ssh隧道,所以我正在使用localhost)。这可以正常工作,但是当我在运行弹性的服务器上部署应用程序时,会抛出
403-禁止
但是,使用该服务器上的curl效果很好。我还没有找到API在本地计算机上与部署时的行为应有所不同的任何原因。发生这种现象的原因可能是什么?
如果某些东西在弹性配置中被弄乱了,那么来自服务器的卷曲也不会起作用。
感谢帮助。
答案 0 :(得分:0)
您忘记在URL(http://)中指定协议。
String elasticUrl = "http://localhost:9200/" + route + "/_bulk";
如果这样做没有帮助,请通过将org.apache.http.wire
设置为DEBUG
来启用线路日志记录,并查看将哪些报头发送到服务器以及确切的响应是什么。