所以我正在运行一个hadoop查询,它需要运行在amazonec2上的elasticsearch索引中的一个字段的信息。问题是,我不断得到“没有配置的节点是可用的”错误。更令人沮丧的是,我在几天前让它工作,然后在查询过程中因为缺少cpu操作而退出。但我的搭档不知道这一点,所以他试图找出为什么它在查询过程中失去了连接,似乎导致了这个问题。他不记得他做了什么。
我知道以前有人问过这个问题,但我确信我的集群名称是正确的,并且我在es上运行的查询不应该导致超时,而且在以前运行时不会。另外,不应该有防火墙问题,因为我直接在ec2示例上运行程序。它是一个使用yarn的伪分布式单节点集群。ec2示例有一个相关的弹性ip(意味着它的公共ip将保持不变),并且运行amazon的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或其他什么,请告诉我。
1条答案
按热度按时间dfddblmv1#
解决了!在另一个逻辑部分,我有“client.close();”。说出来解决了我的问题。