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

问题描述

目前,我们有3个独立的环境,带有4个Elasticsearch集群。此外,我们有2个不同的用例,我们在其中搜索客户数据的相似性,并在其中搜索日志。

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

即使Elastic似乎建议每个用例使用一个集群,以便您可以优化索引和分片大小IMO,我相信,如果我们只有1个集群,或者至少出现故障,我们将获得更好的性能和稳定性。到2(prod和nonprod)。我们还将减少维护费用,因为我在每个环境中都收到CloudWatch警报,有一些保存的对象需要从一个环境中转移到另一个环境,并且我已经成为负责处理所有这一切的人,最终导致分配努力。

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

解决方法

ES群集由节点(最重要的是数据节点和主节点)组成,它并非只能在群集级别进行优化,而是可以根据用例轻松调整索引和分片级别。

在您的情况下,由于您没有太多数据,因此只有2个env(prod和non-prod env。)是很有意义的,这样可以避免集群管理的开销,并采用最佳做法,例如拥有3个主节点来提高性能。可用性原因。

当根据索引所切断的数据和用例进行优化时,您可以进行优化,例如对于读取大量的索引,有意义的是拥有更多的副本,而对于索引繁重的操作,则可能需要将refresh_interval(def 1 sec)增加到更高的值。

请参考improve search performanceimprove indexing speed来调整索引,还可以尝试free cluster analyzer tool在集群和节点中查找错误的配置。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...