我正在尝试使用java api进行弹性搜索,但是当我尝试运行应用程序时,我会遇到异常。
18:13:52.378 [elasticsearch[Fallen One][generic][T#1]] INFO org.elasticsearch.client.transport - [Fallen One] failed to get local cluster state for [#transport#-1][integra][inet[/127.0.0.1:9300]], disconnecting...
org.elasticsearch.transport.ReceiveTimeoutTransportException: [][inet[/127.0.0.1:9300]][cluster/state] request_id [52] timed out after [5001ms]
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:356) [elasticsearch-1.0.1.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_51]
at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]
18:13:52.381 [elasticsearch[Fallen One][generic][T#1]] DEBUG org.elasticsearch.transport.netty - [Fallen One] disconnected from [[#transport#-1][integra][inet[/127.0.0.1:9300]]]
18:13:52.391 [elasticsearch[Fallen One][generic][T#3]] DEBUG org.elasticsearch.transport.netty - [Fallen One] connected to node [[#transport#-1][integra][inet[/127.0.0.1:9300]]]
连接弹性搜索的代码是
private String[] esNodes = { "127.0.0.1:9300" };
protected TransportClient buildClient() throws Exception {
Settings settings = ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", true)
.put("client.transport.ignore_cluster_name",true).build();
TransportClient client = new TransportClient(settings);
for (int i = 0; i < esNodes.length; i++) {
client.addTransportAddress(toAddress(esNodes[i]));
}
return client;
}
private InetSocketTransportAddress toAddress(String address) {
if (address == null) return null;
String[] splitted = address.split(":");
int port = 9300;
if (splitted.length > 1) {
port = Integer.parseInt(splitted[1]);
}
return new InetSocketTransportAddress(splitted[0], port);
}
任何人都可以帮助我,我是弹性搜索新手,不知道如何解决这个问题。
答案 0 :(得分:1)
我正在使用此代码连接到我的弹性搜索,并且非常好用。
Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", clusterName).build();
this.client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(ipAddress,9300));
其中ipAddress和Clustername是我的函数的参数。
答案 1 :(得分:0)
您应该查看笔记本电脑上的网络。检查您是否可以连接到localhost。您可以尝试的另一件事是启动两个具有相同配置的elasticsearch实例,以查看它们是否连接。最后看一下elasticsearch.yml的网络部分。当在本地计算机上遇到网络问题时,我通常会尝试以下两个选项:
network.host:localhost discovery.zen.ping.multicast.enabled:false discovery.zen.ping.unicast.hosts:[&#34; localhost&#34;]
答案 2 :(得分:-1)
我认为弹性搜索服务器未启动..尝试点击浏览器或卷曲评论..如果有效..试试上面的代码..
注意:如果您的JAVA API JAR VERSION DIFFERS也升级PROB ..(获取与ES版本相同的java api版本
注意:elasticsearch java api可以帮助你连接到elasticsearch ..但它无法使用api启动一个elasticsearch节点。
你的代码很好..它也是Vry标准..