Java 客户端找不到主节点 : MasterNotDiscoveredException waited for [1m]

标签 java scala elasticsearch vagrant

我正在使用 vagrant,并使用 debian 软件包在其上安装了 ES:

elasticsearch-1.1.1.deb

在我的网络应用程序中,我正在使用 jar:

org.elasticsearch elasticsearch 1.1.1

我正在创建我的客户端:

val node = nodeBuilder.client(true).node
val client: Client = node.client 

当我尝试索引时出现错误:

val response = client.prepareIndex("articles", "article", article.id.toString).setSource(json).execute.actionGet

我得到的错误是:

[MasterNotDiscoveredException: waited for [1m]]

我可以通过以下方式看到我的 ES 实例工作正常:

http://localhost:9200

我从 README 文件运行了一些测试查询,它们运行良好,但现在由于某种原因它也不起作用:

http://localhost:9200/twitter/user/kimchy?pretty=true

我得到错误:

{
  "error" : "ClusterBlockException[blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];[SERVICE_UNAVAILABLE/2/no master];]",
  "status" : 503
}

我的 vagrant 文件为 Elasticsearch 打开了 2 个端口:

  config.vm.network "forwarded_port", guest: 9200, host: 9200 # ES
  config.vm.network "forwarded_port", guest: 9300, host: 9300 # ES

问题是什么?

注意:我的 Web 应用程序没有使用 elasticsearch.yml 文件,因为据我所知,它只是连接到默认的 localhost:9200。

最佳答案

通常你必须通过http从外部连接到ES(通常,但也有其他协议(protocol)可用),然后再谈REST/JSON。因此,您的 webapp 应该使用 scala/java ES 客户端(参见 http://www.elasticsearch.org/guide/en/elasticsearch/client/community/current/clients.html),然后通过 http 连接到在端口 9200 上运行 ES 的主机。端口 9300 仅用于节点间通信(ES 是分布式集群系统)。但是还有另一种与 ES 远程对话的方法:启动一个加入集群的节点,然后通过内部客户端查询这个节点。但是:

在您的上述问题中,您尝试通过启动节点的内部 Java 客户端(内部传输)连接到 ES,然后尝试加入集群。失败是因为找不到主节点。可能是由于网络问题。尝试在类路径中包含 elasticsearch.yml 或使用如上所述的 REST。还有第三种选择:TransportClient - 看http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/client.html#transport-client

另见 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-transport.htmlhttp://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-http.htmlhttp://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-memcached.html

关于Java 客户端找不到主节点 : MasterNotDiscoveredException waited for [1m],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253224/

相关文章:

elasticsearch - 如何在Elasticsearch中指定default-mapping.json

php - 通过返回的id结果数组的elasticsearch查询未按传入的id数组排序

java - 使用 if 语句计算水的物质状态?

java - 在java中将字符串转换为mac地址格式

java - 带黑色字体的 iText 矩形

scala - 如何在Scala中导入不依赖路径的内部类?

scala - 如何将包导入 Scala REPL?

scala - Scala:隐式传递一个隐式参数,显式传递另一个。可能吗?

elasticsearch - Elasticsearch-根据其他文档geo_shape搜索带有geo_shape的文档

java - 使用 DateTimeFormatter 显示短时区名称