elastic4s通过TcpClient.transport连接时NoNodeAvailableException

时间:2017-08-08 19:57:52

标签: scala elasticsearch elastic4s

我试图通过给定的一个样本来elastic4s here

但是当我尝试通过TcpClient.transport连接时,我一直得到以下异常:

Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{IFyYWnE_S4aHRVxT9v60LQ}{dockerhost}{192.168.99.100:9300}]]

尝试连接到docker上的弹性实例时,elastic版本为2.3.4

以下是依赖关系下面的代码。

import com.sksamuel.elastic4s.{ElasticClient, ElasticsearchClientUri, TcpClient}
import org.elasticsearch.action.support.WriteRequest.RefreshPolicy
import org.elasticsearch.common.settings.Settings
import com.sksamuel.elastic4s.ElasticDsl._


object Main extends App {
  //val settings = Settings.builder().put("cluster.name", "elasticsearch").build()
  val client = TcpClient.transport(ElasticsearchClientUri("elasticsearch://dockerhost:9300"))

  client.execute {
  bulk(
    indexInto("myindex" / "mytype").fields("country" -> "Mongolia", "capital" -> "Ulaanbaatar"),
    indexInto("myindex" / "mytype").fields("country" -> "Namibia", "capital" -> "Windhoek")
  ).refresh(RefreshPolicy.WAIT_UNTIL)
  }.await

  val result = client.execute {
    search("myindex").matchQuery("capital", "ulaanbaatar")
  }.await

  println(result.hits.head.sourceAsString)

  client.close()
}

的build.gradle:

compile group: 'com.sksamuel.elastic4s', name: 'elastic4s-core_2.11', version: '5.4.9'
compile group: 'com.sksamuel.elastic4s', name: 'elastic4s-tcp_2.11', version: '5.4.9'
compile group: 'com.sksamuel.elastic4s', name: 'elastic4s-http_2.11', version: '5.4.9'
compile group: 'com.sksamuel.elastic4s', name: 'elastic4s-streams_2.11', version: '5.4.9'

有关此问题的任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:1)

我问了很多这个问题,99%的时间,这个问题的答案是

  1. 群集名称不是默认值(elasticsearch),因此必须在连接字符串中指定。

  2. 服务器未设置为在localhost之外侦听。 https://www.elastic.co/blog/elasticsearch-unplugged