elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Elasticsearch Java客户端:can';无法连接到远程服务器

Elasticsearch Java客户端:can';无法连接到远程服务器,java,elasticsearch,Java,elasticsearch,我需要使用此处提供的url连接到远程位置的ElasticSearch索引: 然而,我不知道如何在Java中实现这一点 根本没有太多信息。 我也没有找到任何JavaDocs,它们存在吗 现在,有一些用Python编写的工作示例,它们确认服务器已启动并正在运行,连接部分如下所示: es = Elasticsearch([{ 'host':'api.exiletools.com', 'port':80, 'http_auth':'apikey:DEVELOPMENT-Indexer' }

我需要使用此处提供的url连接到远程位置的ElasticSearch索引:

然而,我不知道如何在Java中实现这一点

根本没有太多信息。
我也没有找到任何JavaDocs,它们存在吗

现在,有一些用Python编写的工作示例,它们确认服务器已启动并正在运行,连接部分如下所示:

es = Elasticsearch([{
  'host':'api.exiletools.com',
  'port':80,
  'http_auth':'apikey:DEVELOPMENT-Indexer'
}])
我想做的是:

client = new TransportClient()
                    .addTransportAddress(new InetSocketTransportAddress("apikey:DEVELOPMENT-Indexer@api.exiletools.com/index", 9300));
还尝试了端口9200和80

这导致: java.nio.channels.unsolvedAddressException

和NoNodeAvailableException

商店索引器API在端口80上提供了一个HTTP入口点,以通过HTTP协议与ES集群通信。ES
TransportClient
不是用于此目的的正确客户端,因为它只能通过TCP进行通信

由于Elasticsearch不提供开箱即用的HTTP客户端,因此您需要使用特定的库(例如),或者您可以使用自己的REST客户端

实现后者的一个简单方法是使用Spring的:

//创建REST模板
RestTemplate rest=新RestTemplate()
//添加授权标头
HttpHeaders=新的HttpHeaders();
标题。添加(“授权”、“开发索引器”);
//定义URL和查询
字符串url=”http://api.exiletools.com/index/_search";
String allQuery=“{\'query\':{\'matchAll\':{}}”;
//提出请求
HttpEntity HttpEq=新的HttpEntity(所有查询,标题);
ResponseEntity resp=rest.exchange(url、HttpMethod.POST、httpReq、String.class)
//检索JSON响应
String body=resp.getBody();

Shop Indexer API在端口80上提供了一个HTTP入口点,用于通过HTTP协议与ES群集通信。ES
TransportClient
不是用于此目的的正确客户端,因为它只能通过TCP进行通信

由于Elasticsearch不提供开箱即用的HTTP客户端,因此您需要使用特定的库(例如),或者您可以使用自己的REST客户端

实现后者的一个简单方法是使用Spring的:

//创建REST模板
RestTemplate rest=新RestTemplate()
//添加授权标头
HttpHeaders=新的HttpHeaders();
标题。添加(“授权”、“开发索引器”);
//定义URL和查询
字符串url=”http://api.exiletools.com/index/_search";
String allQuery=“{\'query\':{\'matchAll\':{}}”;
//提出请求
HttpEntity HttpEq=新的HttpEntity(所有查询,标题);
ResponseEntity resp=rest.exchange(url、HttpMethod.POST、httpReq、String.class)
//检索JSON响应
String body=resp.getBody();

Shop Indexer API在端口80上提供了一个HTTP入口点,用于通过HTTP协议与ES群集通信。ES
TransportClient
不是用于此目的的正确客户端,因为它只能通过TCP进行通信

由于Elasticsearch不提供开箱即用的HTTP客户端,因此您需要使用特定的库(例如),或者您可以使用自己的REST客户端

实现后者的一个简单方法是使用Spring的:

//创建REST模板
RestTemplate rest=新RestTemplate()
//添加授权标头
HttpHeaders=新的HttpHeaders();
标题。添加(“授权”、“开发索引器”);
//定义URL和查询
字符串url=”http://api.exiletools.com/index/_search";
String allQuery=“{\'query\':{\'matchAll\':{}}”;
//提出请求
HttpEntity HttpEq=新的HttpEntity(所有查询,标题);
ResponseEntity resp=rest.exchange(url、HttpMethod.POST、httpReq、String.class)
//检索JSON响应
String body=resp.getBody();

Shop Indexer API在端口80上提供了一个HTTP入口点,用于通过HTTP协议与ES群集通信。ES
TransportClient
不是用于此目的的正确客户端,因为它只能通过TCP进行通信

由于Elasticsearch不提供开箱即用的HTTP客户端,因此您需要使用特定的库(例如),或者您可以使用自己的REST客户端

实现后者的一个简单方法是使用Spring的:

//创建REST模板
RestTemplate rest=新RestTemplate()
//添加授权标头
HttpHeaders=新的HttpHeaders();
标题。添加(“授权”、“开发索引器”);
//定义URL和查询
字符串url=”http://api.exiletools.com/index/_search";
String allQuery=“{\'query\':{\'matchAll\':{}}”;
//提出请求
HttpEntity HttpEq=新的HttpEntity(所有查询,标题);
ResponseEntity resp=rest.exchange(url、HttpMethod.POST、httpReq、String.class)
//检索JSON响应
String body=resp.getBody();


url是否可以从运行此url的位置访问,即api.failationtools.com?正如我所说,我有一个使用此url的工作Python脚本。url是否可以从运行此url的位置访问,即api.failationtools.com?正如我所说,我有一个使用此url的工作Python脚本。url是否可以从运行此url的位置访问。api.FailationTools.com?正如我所说,我有一个使用此url的工作Python脚本。您运行此url的地方可以访问此url吗,即api.FailationTools.com?正如我所说,我有一个使用此url的工作Python脚本。是的,服务所有者刚刚确认了这一点,他不能允许对本机ES Java客户端进行访问,因为他无法在不使用Shield的情况下保护它。。。我希望避免使用Spring,因此我将研究这个笑话项目,他完全有可能保护本机ES客户端。无论如何,请注意,如果你同意的话,也可以使用裸机。基本上,任何Java HTTP客户机库都可以工作,只需选择您喜欢的一个。只需使用Spring尝试此方法,它立即工作,谢谢,得到了服务器的响应。Jest库由于某种原因无法工作,不管发生什么情况,都会不断抛出格式错误的json异常
// create the REST template
RestTemplate rest = new RestTemplate()
// add the authorization header
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "DEVELOPMENT-Indexer");

// define URL and query
String url = "http://api.exiletools.com/index/_search";
String allQuery = "{\"query\":{\"matchAll\":{}}}";

// make the request
HttpEntity<String> httpReq = new HttpEntity<String>(allQuery, headers);
ResponseEntity<String> resp = rest.exchange(url, HttpMethod.POST, httpReq, String.class)

// retrieve the JSON response
String body = resp.getBody();