我们在 14 个节点的集群中拥有嵌入 Elasticsearch 的 Java 应用程序。所有数据都驻留在中央数据库中,并在 elasticsearch 中进行索引以供查询。可以随时进行完整的重新索引。
系统查询量很大,写入量很小。文档的数量不会超过 300.000 个。每个文档的大小变化很大,从只有几个 id 到从例如几页的 word 文档中提取的文本。
我想确保在完全崩溃的情况下,一个或两个节点可供系统工作就足够了。
写入一致性应该不是问题,因为数据的主副本在数据库中,并且似乎 ES 能够通过使用最新版本来解决冲突数据(在我们的情况下应该没问题)
我的第一个想法是使用 1 个分片和 13 个副本。这自然会确保所有节点都可以访问所有数据。这也可以通过拥有 2 个分片 / 13 个副本来实现,因此为了确保所有数据都可用,副本的数量应该是节点的数量 - 1,而不取决于分片的数量(可以是任何)。
如果将节点数量的要求降低到“2 个节点应该随时up”,那么“x/节点数 - 2”的分片/副本分布就足够了。
所以,对于这个问题:
断言上述设置并且我的想法是正确的,具有 1 个分片/13 个副本的设置是否有意义,或者通过添加更多分片并运行例如 4 个分片/13 个副本设置是否有任何好处?