elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 弹性搜索:没有可用的配置节点

Java 弹性搜索:没有可用的配置节点,java,elasticsearch,Java,elasticsearch,我正在运行下面的代码,它将尝试从数据库中提取数据,并使用弹性搜索对其进行索引。 数据量约为100万条记录。 但代码在中间的某个地方中断,并给出错误为“没有可用的配置节点”。 而且,即使代码运行时没有错误,它也不会加载整个数据 Settings settings = ImmutableSettings.settingsBuilder() .put("cluster.name", "elasticsearch")

我正在运行下面的代码,它将尝试从数据库中提取数据,并使用弹性搜索对其进行索引。 数据量约为100万条记录。 但代码在中间的某个地方中断,并给出错误为“没有可用的配置节点”。 而且,即使代码运行时没有错误,它也不会加载整个数据

Settings settings = ImmutableSettings.settingsBuilder()
                                .put("cluster.name", "elasticsearch")
                                .build();

Client client = new TransportClient(settings)
                            .addTransportAddress(new InetSocketTransportAddress("localhost", 9300));

while(rs.next())
{
    Map<String, Object> json = new HashMap<String, Object>();   
    json.put("id", rs.getLong("id"));
    json.put("type",rs.getString("type"));      
    client.prepareIndex("test", "doc").setSource(json).execute();
}
Settings=ImmutableSettings.settingsBuilder()
.put(“cluster.name”、“elasticsearch”)
.build();
客户端=新的TransportClient(设置)
.addTransportAddress(新的InetSocketTransportAddress(“localhost”,9300));
while(rs.next())
{
Map json=newhashmap();
json.put(“id”,rs.getLong(“id”);
json.put(“type”,rs.getString(“type”);
client.prepareIndex(“test”、“doc”).setSource(json.execute();
}

感谢您提前提供的所有帮助

很可能是您使群集过载了。节点开始耗尽内存/CPU,然后死亡。不要向它发送太多/太大的索引请求。你肯定无法支持这一点,你正在达到它的极限。或者得到一个更强大的集群

查看有关如何调整消息块大小的详细信息:

整个批量请求需要由接收我们请求的节点加载到内存中,因此请求越大,可用于其他请求的内存就越少。存在一个最佳的批量请求大小。超过这个尺寸,性能将不再提高,甚至可能下降。然而,最佳大小不是一个固定的数字。这完全取决于您的硬件、文档大小和复杂性以及索引和搜索负载

幸运的是,很容易找到这个最佳点:尝试以不断增大的大小批量为典型文档编制索引。当性能开始下降时,批大小太大。一个好的开始是批量处理1000到5000个文档,或者,如果您的文档非常大,则使用更小的批量

关注批量请求的物理大小通常很有用。一千个1KB的文档与一千个1MB的文档非常不同。一个好的批量大小是5-15MB左右


标签是怎么回事?很可能是集群过载了。节点开始耗尽内存/CPU并死亡。我如何阻止群集过载…实际上它占用了我所有的RAM,然后我必须杀死它。不要向它发送太多/太大的索引请求。你肯定无法支持这一点,你正在达到它的极限。或者获得一个更强大的集群。然后,您仍然会使集群过载。Elasticsearch可以为搜索创造奇迹,但不要使用RaspberryPI存储ES节点,然后期望每秒处理数百次搜索或索引10000个文档。