Scala 将我的代码与elasticsearch连接
我在机器中安装了elasticsearch服务器: 这是配置的一部分:Scala 将我的代码与elasticsearch连接,scala,elasticsearch,Scala,elasticsearch,我在机器中安装了elasticsearch服务器: 这是配置的一部分: transport: { bound_address: inet[/192.168.1.42:9300] publish_address: inet[/192.168.1.42:9300] } http: { bound_address: inet[/192.168.1.42:9200] publish_address: inet[/192.168.1.42:9200] max_content_lengt
transport: {
bound_address: inet[/192.168.1.42:9300]
publish_address: inet[/192.168.1.42:9300]
}
http: {
bound_address: inet[/192.168.1.42:9200]
publish_address: inet[/192.168.1.42:9200]
max_content_length_in_bytes: 104857600
}
我尝试从Scala程序和elasticsearch java库连接到此服务器。
这是使用nodeBuilder连接到服务器的代码:
val builder:Node = nodeBuilder()
.client(true)
.local(false)
.loadConfigSettings(false)
.clusterName("elasticsearch")
.settings(
ImmutableSettings.settingsBuilder()
//.put("network.bind_host", "192.168.1.42")
.put("network.host", "192.168.1.42")
.put("transport.tcp.port",9300)
.put("http.port",9200)
.build()
).node()
val client:Client = builder.client()
但请接受以下例外情况:
java.lang.ExceptionInInitializerError
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at actors.DaasySocketActor$$anonfun$receive$1.applyOrElse(DaasySocketActor.scala:25)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at actors.DaasySocketActor.aroundReceive(DaasySocketActor.scala:17)
at akka.dispatch.Mailbox.run(Mailbox.scala:220)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.Mailbox.run(Mailbox.scala:220)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to [9300]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:389)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
at org.elasticsearch.transport.TransportService.doStart(TransportService.java:91)
Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to [9300]
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:389)
at org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:231)
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166)
at org.elasticsearch.transport.TransportService.doStart(TransportService.java:91)
at lib.int_elasticsearch$.<init>(int_elasticsearch.scala:55)
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
at lib.int_elasticsearch$.<clinit>(int_elasticsearch.scala)
at org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:231)
... 12 more
at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166)
Caused by: org.elasticsearch.common.netty.channel.ChannelException: Failed to bind to: /192.168.1.42:9300
java.lang.ExceptionInInitializeError
在akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
在actors.daasystocketactor$$anonfun$receive$1.applyOrElse(daasystocketactor.scala:25)
在akka.actor.ActorCell.invoke(ActorCell.scala:487)
在akka.actor.actor$class.aroundReceive(actor.scala:465)
在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at actors.DaasySocketActor.aroundReceive(DaasySocketActor.scala:17)
在akka.dispatch.Mailbox.run(Mailbox.scala:220)
在akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
在akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
在akka.actor.ActorCell.invoke(ActorCell.scala:487)
位于scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
在akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
位于scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
在akka.dispatch.Mailbox.run(Mailbox.scala:220)
位于scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
在akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
在scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)中
位于scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
原因:org.elasticsearch.transport.BindTransportException:绑定到[9300]失败
位于scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
位于org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:389)
位于scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
位于org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
在scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)中
在org.elasticsearch.transport.TransportService.doStart(TransportService.java:91)上
原因:org.elasticsearch.transport.BindTransportException:绑定到[9300]失败
位于org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
位于org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:389)
位于org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:231)
位于org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
位于org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166)
在org.elasticsearch.transport.TransportService.doStart(TransportService.java:91)上
在lib.int_elasticsearch$(int_elasticsearch.scala:55)
位于org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
位于lib.int\u elasticsearch$(int\u elasticsearch.scala)
位于org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:231)
... 还有12个
位于org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166)
原因:org.elasticsearch.common.netty.channel.ChannelException:绑定到:/192.168.1.42:9300失败
如果我尝试使用此代码进行连接,效果会很好:
val client:client=new TransportClient()
.addTransportAddress(新的InetSocketTransportAddress(“192.168.1.42”,9300))
但我想连接节点客户端,而不是TransportClient
错误是什么?
非常感谢将主机名和端口从节点客户端剥离。节点客户端本身就是一个节点,因此将主机名/端口设置为另一个节点就是发生冲突的原因(表现在绑定异常中)
一个节点加入集群。传输客户端只连接到一个节点。好的,但是我的代码和elasticsearch不在同一台服务器上,我的代码如何知道连接到elasticsearch的ip?谢谢
val builder:Node = nodeBuilder()
.client(true)
.local(false)
.loadConfigSettings(false)
.clusterName("elasticsearch")
.node()
val client:Client = builder.client()