elasticsearch,amazon-ec2,Java,Hadoop,elasticsearch,Amazon Ec2" /> elasticsearch,amazon-ec2,Java,Hadoop,elasticsearch,Amazon Ec2" />

Java Elasticsearch Hadoop所有配置的节点都不可用

Java Elasticsearch Hadoop所有配置的节点都不可用,java,hadoop,elasticsearch,amazon-ec2,Java,Hadoop,elasticsearch,Amazon Ec2,因此,我正在运行一个Hadoop查询,它需要来自运行在AmazonEC2上的ElasticSearch索引中的字段的信息。问题是,我一直收到“所有配置的节点都不可用”错误。更让人沮丧的是,几天前我做过这项工作,然后在查询的中间退出了,因为缺少CPU操作系统。但我的合伙人不知道,所以他试图找出为什么在查询中失去联系的原因似乎是造成了这个问题。他不记得他做了什么 我知道以前有人问过这个问题,但我确信我的集群名称是正确的,我在ES上运行的查询不应该导致超时,而且在以前运行时也没有。此外,不应该存在防火

因此,我正在运行一个Hadoop查询,它需要来自运行在AmazonEC2上的ElasticSearch索引中的字段的信息。问题是,我一直收到“所有配置的节点都不可用”错误。更让人沮丧的是,几天前我做过这项工作,然后在查询的中间退出了,因为缺少CPU操作系统。但我的合伙人不知道,所以他试图找出为什么在查询中失去联系的原因似乎是造成了这个问题。他不记得他做了什么

我知道以前有人问过这个问题,但我确信我的集群名称是正确的,我在ES上运行的查询不应该导致超时,而且在以前运行时也没有。此外,不应该存在防火墙问题,因为我直接在EC2实例上运行该程序。它是一个使用纱线的伪分布式单节点集群。EC2实例有一个相关的弹性IP(意味着它的公共IP将保持不变),并且正在运行Amazon的ubuntu映像

以下是java代码(已删除标识信息):

公共静态字符串getAccountNumber(int fieldValue){
//在没有设置的情况下尝试,但仍然没有骰子。
设置设置=ImmutableSettings.settingsBuilder().put(“cluster.name”,“elasticsearch”).build();
TransportClient=新的TransportClient(设置)
.addTransportAddress(新的InetSocketTransportAddress(“ec2-.compute-1.amazonaws.com”,9300));
FilterBuilder过滤器=布尔过滤器()
.should(termFilter(“objectName1.field”,fieldValue))
.should(termFilter(“objectName2.field”,fieldValue));
SearchResponse=client.prepareSearch(“indexName”)
.setTypes(“类型”)
.setPostFilter(过滤器)
.setSize(1000)
.execute()
.actionGet();
//其他逻辑

如果您需要我提供我的core-site.xml、hdfs-site.xml或其他任何东西,请告诉我。

解决了它!在另一个逻辑部分,我有“client.close();”。注释解决了我的问题。

解决了它!在另一个逻辑部分,我有“client.close();”。注释解决了我的问题

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