2013-10-24 11 views
21

का उपयोग कर लोचदार खोज सर्वर से कनेक्ट नहीं हो सकता है मैं जावा एपीआई का उपयोग कर एक लोचदार खोज सर्वर से कनेक्ट करने का प्रयास कर रहा हूं। मैं क्लस्टर को देखने के लिए स्टार्ट/स्टॉप और लोचदार खोज सिर के लिए लोचदार सेवा का उपयोग कर रहा हूं। क्लस्टर/नोड सक्रिय है, आरईएसटी एपीआई 9 0000 पर कर्ल के माध्यम से ठीक काम करता है। मैंने इस विषय के बारे में हर पोस्ट को काफी पढ़ा है, फिर भी मैं इसे काम नहीं कर सकता, नीचे मेरा विवरण है:जावा एपीआई

मैंने कोशिश की है इन सभी:

  1. का उपयोग करते हुए स्थानीय होस्ट, devhost1,127.0.0.1, या TransportClient
  2. में नेटवर्क config.yaml में आईपी गुण uncommenting और (सर्वर)
  3. 127.0.0.1 डाल पर वास्तविक IP यह जांच कर रहा है कि पोर्ट 9300 उपलब्ध है या नहीं, यह है।

... 9200/_cluster/नोड्स

{ 
    "ok": true, 
    "cluster_name": "test", 
    "nodes": { 
    "NLVBbJpJTZWefeI2kQt3Tg": { 
     "name": "inventory_management", 
     "transport_address": "inet[/127.0.0.1:9300]", 
     "hostname": "devhost1", 
     "version": "0.90.5", 
     "http_address": "inet[/127.0.0.1:9200]" 
    } 
    } 
} 

... 9200/_cluster/स्वास्थ्य सुंदर = सच

{ 
    "cluster_name" : "test", 
    "status" : "green", 
    "timed_out" : false, 
    "number_of_nodes" : 1, 
    "number_of_data_nodes" : 1, 
    "active_primary_shards" : 0, 
    "active_shards" : 0, 
    "relocating_shards" : 0, 
    "initializing_shards" : 0, 
    "unassigned_shards" : 0 
} 

जावा कोड:?

Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "test").put("node.name", "inventory_management").build(); 
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("localhost", 9300)); 
IndexResponse response = client.prepareIndex("twitter", "tweet", "1").setSource(json).execute().actionGet(); 

अपवाद: क्लाइंट (जावा एपीआई) से

org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9300]][/cluster/nodes/info] 
org.elasticsearch.client.transport.NoNodeAvailableException: No node available 
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:138) 
    at org.elasticsearch.client.transport.support.InternalTransportClient.index(InternalTransportClient.java:124) 
    at org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:242) 
    at org.elasticsearch.client.action.index.IndexRequestBuilder.doExecute(IndexRequestBuilder.java:219) 
    at org.elasticsearch.client.action.support.BaseRequestBuilder.execute(BaseRequestBuilder.java:52) 
    at org.elasticsearch.client.action.support.BaseRequestBuilder.execute(BaseRequestBuilder.java:47) 

प्रवेश करें:

[2013-10-24 16:37:15,783][DEBUG][threadpool.cached  ] [Aragorn] Initializing cached thread pool with keep_alive[1m], scheduled_size[20] 
[2013-10-24 16:37:15,809][DEBUG][client.transport   ] [Aragorn] node_sampler_interval[1s] 
[2013-10-24 16:37:15,820][DEBUG][netty.channel.socket.nio.NioProviderMetadata] Using the autodetected NIO constraint level: 0 
[2013-10-24 16:37:15,872][DEBUG][transport.netty   ] [Aragorn] Connected to node [[#temp#-1][inet[localhost/127.0.0.1:9300]]] 
[2013-10-24 16:37:15,892][DEBUG][transport.netty   ] [Aragorn] Disconnected from [[#temp#-1][inet[localhost/127.0.0.1:9300]]] 
[2013-10-24 16:37:15,894][DEBUG][client.transport   ] [Aragorn] Failed to get node info from [#temp#-1][inet[localhost/127.0.0.1:9300]], removed from nodes list 
org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9300]][/cluster/nodes/info] 

+++++++++++++++++++++ ++

जावा एपीआई में यूनिकास्ट में एक ही त्रुटि के साथ प्रयास किया।

[2013-10-25 13:49:58,379][INFO ][node      ] [inventory_management] version[0.90.5], pid[2426], build[c8714e8/2013-09-17T12:50:20Z] 
[2013-10-25 13:49:58,379][INFO ][node      ] [inventory_management] initializing ... 
[2013-10-25 13:49:58,382][INFO ][plugins     ] [inventory_management] loaded [], sites [] 
[2013-10-25 13:49:59,853][INFO ][node      ] [inventory_management] initialized 
[2013-10-25 13:49:59,853][INFO ][node      ] [inventory_management] starting ... 
[2013-10-25 13:49:59,937][INFO ][transport    ] [inventory_management] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.1.50:9300]} 
[2013-10-25 13:50:02,960][INFO ][cluster.service   ] [inventory_management] new_master [inventory_management][2-uG1xVNSSiLo5RVRrjbGg][inet[/192.168.1.50:9300]], reason: zen-disco-join (elected_as_master) 
[2013-10-25 13:50:02,972][INFO ][discovery    ] [inventory_management] test/2-uG1xVNSSiLo5RVRrjbGg 
[2013-10-25 13:50:02,989][INFO ][http      ] [inventory_management] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.50:9200]} 
[2013-10-25 13:50:02,989][INFO ][node      ] [inventory_management] started 
[2013-10-25 13:50:03,024][INFO ][gateway     ] [inventory_management] recovered [0] indices into cluster_state 
[2013-10-25 13:50:09,399][WARN ][transport.netty   ] [inventory_management] exception caught on transport layer [[id: 0x02649775, /127.0.0.1:50028 => /127.0.0.1:9300]], closing connection 
java.io.StreamCorruptedException: invalid internal transport message format 
    at org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27) 
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425) 
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) 
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268) 
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255) 
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) 
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
    at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
    at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
[2013-10-25 13:50:09,403][WARN ][transport.netty   ] [inventory_management] exception caught on transport layer [[id: 0x02649775, /127.0.0.1:50028 :> /127.0.0.1:9300]], closing connection 
java.io.StreamCorruptedException: invalid internal transport message format 
    at org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27) 
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425) 
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.cleanup(FrameDecoder.java:482) 
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.channelDisconnected(FrameDecoder.java:365) 
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:102) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
    at org.elasticsearch.common.netty.channel.Channels.fireChannelDisconnected(Channels.java:396) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:361) 
    at org.elasticsearch.common.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:81) 
    at org.elasticsearch.common.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:36) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:574) 
    at org.elasticsearch.common.netty.channel.Channels.close(Channels.java:812) 
    at org.elasticsearch.common.netty.channel.AbstractChannel.close(AbstractChannel.java:197) 
    at org.elasticsearch.transport.netty.NettyTransport.exceptionCaught(NettyTransport.java:501) 
    at org.elasticsearch.transport.netty.MessageChannelHandler.exceptionCaught(MessageChannelHandler.java:228) 
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:112) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.exceptionCaught(FrameDecoder.java:377) 
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:112) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
    at org.elasticsearch.common.netty.channel.Channels.fireExceptionCaught(Channels.java:525) 
    at org.elasticsearch.common.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:48) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.notifyHandlerException(DefaultChannelPipeline.java:658) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:566) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268) 
    at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255) 
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) 
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) 
    at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
    at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
    at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 

+++++++++++++++++++++++ 
+++++++++++++++++++++++ 

जावा संस्करण:

java version "1.7.0_25" 
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3) 
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode) 

+++++++++++++++++++++++ 
+++++++++++++++++++++++ 
+++++++++++++++++++++++ 

अंक नीचे के अनुसार हल किया गया है

discovery.zen.ping.multicast.enabled: false 
discovery.zen.ping.unicast.hosts: "localhost" # Tried with devhost1 127.0.0.1 as well and ["localhost"] too 

यह सर्वर लॉग है। सुनिश्चित करें कि आपके क्लाइंट और सर्वर संस्करण सिंक हो रहे हैं!

+0

मुझे लगता है कि समस्या आपकी मशीन पर कई नेटवर्क डिवाइस होने से संबंधित हो सकती है। आप अपने स्थानीय मशीन पर क्लाइंट और सर्वर दोनों चला रहे हैं? अन्यथा यह मल्टीकास्ट का उपयोग कर एक खोज समस्या है ... कोई फ़ायरवॉल? क्या ऑपरेटिंग सिस्टम? – javanna

+0

हाय, हाँ यह सही है कि दोनों एक ही मशीन (LINUX/Kubuntu) पर चल रहे हैं। कोई फ़ायरवॉल नहीं – k9m

+0

... केवल एक नेटवर्क डिवाइस मिला। – k9m

उत्तर

25

बस इतना ही सवाल उन लोगों के लिए उत्तर दिया गया है जो एक ही समस्या का अनुभव कर सकते हैं (उत्तर वास्तव में प्रश्न के अंत में है)।

मैं एक ही मुद्दे में भाग गया और यह जावा क्लाइंट द्वारा उपयोग किए गए जेएआर के संस्करण और सर्वर के संस्करण के संस्करण के बीच एक विसंगति साबित हुआ। आपकी सबसे अच्छी शर्त एक सटीक मैच सुनिश्चित करना है, तो दिए गए निर्देश here दिए गए निर्देशों को किसी भी tweaking पर काम करें।

जांच करने की एक और बात यह है कि आपका जावा क्लाइंट सही पोर्ट का उपयोग कर रहा है, जो है जो http क्लाइंट द्वारा उपयोग किया जाता है। सही पोर्ट 9200 के बजाय 9300 पर डिफ़ॉल्ट है, जिसका उपयोग बाद वाले द्वारा किया जाता है।

11

यदि कोई और इस धागे पर ठोकर खाता है, तो मुझे एक और कारण पता चला कि आप यह त्रुटि प्राप्त कर सकते हैं क्योंकि cluster_name को डिफ़ॉल्ट के अलावा कुछ और बदल दिया गया है।

curl -XGET localhost:9200/_cluster/nodes?pretty=true 

उपयोग समान कोड क्या ओ पी करने के लिए ऊपर दिया गया है::

अपने वर्तमान cluser_name देखने के लिए

Settings settings = ImmutableSettings.settingsBuilder() 
    .put("cluster.name", "test").build(); 
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("localhost", 9300)); 

स्रोत: http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html

0

यह उपयोगकर्ताओं को, जो वसंत-बूट का उपयोग कर रहे हैं के लिए है वसंत-डेटा लोचदार खोज। कृपया सुनिश्चित करें कि आपके क्लाइंट का संस्करण सर्वर जैसा ही है।

<library name="Gradle: org.elasticsearch:elasticsearch:1.5.2"> 
    <CLASSES> 
    <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.elasticsearch/elasticsearch/1.5.2/47aafc6bf8f23ed8dcbf6a1db174fb0b8e44a8db/elasticsearch-1.5.2.jar!/" /> 
    </CLASSES> 
    <JAVADOC /> 
    <SOURCES> 
    <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.elasticsearch/elasticsearch/1.5.2/d1e0b7b758ce7bd5d6e3757896054b09f28f372d/elasticsearch-1.5.2-sources.jar!/" /> 
    </SOURCES> 
</library> 
0

पहले, संस्करण वास्तव में महत्वपूर्ण है, जावा एपीआई मजबूत संस्करण प्रयोग कर रहे के साथ संबंधित है,

यह समाधान जावा के साथ elasticSearch वी 5.4.1 में काम करता है 8

है कि आप यह सुनिश्चित कर लें सभी निर्भरताओं को प्राप्त कर रहे हैं, और बाल निर्भरता (न केवल लोचदार खोज जार), निर्भरता पेड़ प्राप्त करने के लिए मेवेन, आईवी आदि का उपयोग करें।

उदाहरण के लिए आइवी से:

<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport --> 
    <dependency org="org.elasticsearch.client" name="transport" rev="5.4.1" conf="default"/> 

// --------------------- तो एक कक्षा में आप कॉल कर सकते हैं:

TransportClient client; 

    client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 
संबंधित मुद्दे