当数据量相对较小时,Elasticsearch 大型集群与小型集群的比较

Elasticsearch mega-cluster vs smaller clusters when you have relatively small amounts of data

目前我们有 3 个独立的环境,有 4 个 Elasticsearch 集群。此外,我们有 2 个不同的用例,我们通过这些用例搜索客户数据以寻找相似之处,并且我们有搜索日志。

阅读 elasticsearch 文档和在线视频讨论,建议针对您的用例优化集群,因此从技术上讲,我们应该 4 x 2 = 8 单独的集群。一些集群可以根据生产集群和非生产集群归为一组。但实际上我们是一个小团队,< 10 人,这些集群中的大多数都没有分配数据,所以 运行 3 x master nodes 在所有集群中都太昂贵了。

尽管 Elastic 似乎建议每个用例都有一个集群,这样您可以优化索引和分片大小 IMO 我相信如果我们只有 1 个集群,或者至少,我们会获得更好的性能和稳定性下降到 2(生产和非生产)。我们也会有更少的维护开销 我在每个环境中都收到 CloudWatch 警报,有保存的对象需要从一个环境转移到另一个环境,我已经成为管理所有这些最终创建分配的人全力以赴。

所以我的问题是,即使集群应该根据用例进行调整以获得最佳实践,当您的数据只有几个 GiB 时,这仍然有意义吗?考虑到管理开销,以及与没有主节点的微集群的稳定性权衡?

ES 集群由节点(最重要的是数据和主节点)组成,它不像你只能在集群级别优化,你可以根据你的 use-case 轻松微调索引和分片级别.

在你的情况下,你没有太多数据,只有 2 个环境(产品和 non-prod 环境)是有意义的,以避免集群管理开销并应用最佳实践,比如拥有 3 个出于高可用性原因的主节点。

当涉及到基于哪些数据和 use-case 您的索引正在切断时进行优化时,您可以对其进行优化,例如对于 read-heavy 索引,拥有更多副本和索引繁重是有意义的操作,您可能希望将 refresh_interval(def 1 sec) 增加到更高的值。