因此,我正在运行Hadoop查询,该查询需要来自在Amazon EC2上运行的ElasticSearch索引中的字段的信息。问题是,我一直得到"没有配置的节点可用"错误。更令人沮丧的是,我几天前就开始工作,然后由于缺乏CPU操作而在查询过程中退出。但是我的伙伴并不知道这一点,所以他试图弄清楚为什么它在查询过程中失去了连接似乎导致了这个问题。而且他不记得他做了什么。
我之前已经问过这个问题,但我确定我的群集名称是正确的,我在ES上运行的查询不应该导致超时,并且没有,当它运行之前。此外,不应该出现防火墙问题,因为我直接在EC2实例上运行程序。它是使用纱线的伪分布式单节点集群。 EC2实例具有关联的弹性IP(意味着其公共IP将保持不变),并且正在运行亚马逊的ubuntu映像。
这里是java代码(删除了识别信息):
public static String getAccountNumber(int fieldValue){
//tried it without the Settings, but still no dice.
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build();
TransportClient client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("ec2-<ELASTIC_IP>.compute-1.amazonaws.com", 9300));
FilterBuilder filter = boolFilter()
.should(termFilter("objectName1.field", fieldValue))
.should(termFilter("objectName2.field", fieldValue));
SearchResponse response= client.prepareSearch("indexName")
.setTypes("type")
.setPostFilter(filter)
.setSize(1000)
.execute()
.actionGet();
//other logic
如果您需要我提供我的core-site.xml,hdfs-site.xml或其他任何内容,请告诉我。
答案 0 :(得分:0)
解决了!在另一个逻辑部分,我有&#34; client.close();&#34;。评论说解决了我的问题。