Elasticsearch Java客户端:can';无法连接到远程服务器
我需要使用此处提供的url连接到远程位置的ElasticSearch索引: 然而,我不知道如何在Java中实现这一点 根本没有太多信息。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' }
我也没有找到任何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群集通信。ESTransportClient
不是用于此目的的正确客户端,因为它只能通过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群集通信。ESTransportClient
不是用于此目的的正确客户端,因为它只能通过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群集通信。ESTransportClient
不是用于此目的的正确客户端,因为它只能通过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();