usa tutorial software que para instalar espaƱol elastic comandos aplicaciones java elasticsearch

tutorial - No se puede conectar al servidor de ElasticSearch usando la API de Java



para que se usa elastic search (4)

Estoy intentando conectarme a un servidor ElasticSearch utilizando la API de Java. Utilizo el servicio elasticsearch para iniciar / detener y elasticsearch head para visualizar el clúster. El clúster / nodo está activo, la API REST funciona bien a través de curl en 9200. He leído prácticamente todas las publicaciones sobre este tema, pero no puedo hacerlo funcionar, a continuación se detallan mis detalles:

He intentado todo esto:

  1. Usando localhost, devhost1, 127.0.0.1, o la IP real en la red en TransportClient
  2. Descomentando las propiedades de IP en config.yaml y poniendo 127.0.0.1 (servidor)
  3. Verificando si el puerto 9300 está disponible, es.

... 9200 / _cluster / nodes

{ "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 / health? Pretty = true

{ "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 }

Código de Java:

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();

Excepción:

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)

Log desde el cliente (API de Java):

[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]

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

Intentó con el mismo error de Unicast en la API de Java.

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

Este es el registro del servidor:

[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) +++++++++++++++++++++++ +++++++++++++++++++++++

Versión de Java:

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) +++++++++++++++++++++++ +++++++++++++++++++++++ +++++++++++++++++++++++

El problema ha sido resuelto de la siguiente manera. ¡Asegúrate de que tus versiones de cliente y servidor estén sincronizadas!


En caso de que alguien más se tropiece con este hilo, descubrí que otra razón por la que podría recibir este error es porque el cluster_name ha sido cambiado a algo diferente al predeterminado.

Para ver tu actual cluser_name :

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

Use un código similar al que OP tiene arriba:

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

Fuente: http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html


En primer lugar, la versión es realmente importante, Java API está estrechamente relacionada con la versión que está utilizando,

Esta solución funciona en elasticSearch v 5.4.1 con java 8

asegúrese de obtener todas las dependencias, y las dependencias secundarias (no solo el elástico jar de búsqueda), use maven, ivy, etc. para obtener el árbol de dependencias.

en hiedra por ejemplo:

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

// --------------------- luego en una clase puedes llamar:

TransportClient client; client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));


Esto es para usuarios que están usando spring-boot spring-data elasticsearch. Por favor, asegúrese de que la versión de su cliente sea la misma que la del servidor.

<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>


Solo para que esta pregunta se marque como respondida para otros que puedan experimentar el mismo problema (la respuesta está en realidad al final de la pregunta).

Me encontré con el mismo problema y resultó ser una discrepancia entre la versión del JAR utilizado por el cliente de Java y la versión que el servidor estaba ejecutando. Su mejor opción es asegurar una coincidencia exacta, luego las instrucciones que here funcionan sin ningún ajuste.

Otra cosa que debes comprobar es que tu cliente Java está utilizando el puerto correcto, que no es el que utilizan los clientes http. El puerto correcto es por defecto 9300 en lugar de 9200, que es utilizado por este último.