我目前正在构建一个可以获得弹性搜索结果列表的系统,但是我在servicemix中遇到一个重复出错的错误(它发生在30-60秒左右),这个错误是连接失败的 . 我如何阻止这种情况发生?注意运行ElasticSearch 1.7.1:

2016-12-29 16:05:21,230 | WARN  | elasticsearch[elk][generic][T#19] | transport.netty | 262 -  | [elk] exception caught on transport layer [[id: 0x9ffdafc0]], closing connection
java.nio.channels.UnresolvedAddressException
    at sun.nio.ch.Net.checkAddress(Net.java:101)[:1.8.0_111]
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622)[:1.8.0_111]
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:108)[262:]
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:70)[262:]
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:574)[262:]
    at org.elasticsearch.common.netty.channel.Channels.connect(Channels.java:634)[262:]
    at org.elasticsearch.common.netty.channel.AbstractChannel.connect(AbstractChannel.java:216)[262:]
    at org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:229)[262:]
    at org.elasticsearch.common.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:182)[262:]
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannelsLight(NettyTransport.java:787)[262:]
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:754)[262:]
    at org.elasticsearch.transport.netty.NettyTransport.connectToNodeLight(NettyTransport.java:726)[262:]
    at org.elasticsearch.transport.TransportService.connectToNodeLight(TransportService.java:220)[262:]
    at org.elasticsearch.client.transport.TransportClientNodesService$SimpleNodeSampler.doSample(TransportClientNodesService.java:369)[262:]
    at org.elasticsearch.client.transport.TransportClientNodesService$NodeSampler.sample(TransportClientNodesService.java:315)[262:]
    at org.elasticsearch.client.transport.TransportClientNodesService$ScheduledNodeSampler.run(TransportClientNodesService.java:348)[262:]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_111]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_111]
    at java.lang.Thread.run(Thread.java:745)[:1.8.0_111]

这是我认为引起问题的代码,因为它是连接到我的弹性服务器的代码 .

  • 查询只返回所有内容

  • ImmutableSettings仅包含{"name" => "elk"}

  • InetSocketTransportAddress通常使用localhost:9300(但是我也测试了错误的地址) .

public static SearchResponse getElkResponse(InetSocketTransportAddress elkHost, HashMap<String, String> settingsMap, QueryBuilder query, int minTimeRange) {
    Settings settings = ImmutableSettings.settingsBuilder()
            .put(settingsMap)
            .build();


    TransportClient client = new TransportClient(settings).addTransportAddress(elkHost);
    client.admin().indices().prepareRefresh().execute().actionGet(); //not sure why this is need?
    SearchRequestBuilder req = client.prepareSearch()
            .setTimeout(TimeValue.timeValueMinutes(1))
            .addSort("@timestamp", SortOrder.ASC)
            .setQuery(query)
            .setPostFilter(FilterBuilders.rangeFilter("@timestamp").from("now-" + minTimeRange + "m").to("now"))
            .setSize(100);
    SearchResponse res = req.execute().actionGet();
    return res;
}