有没有好的硬件级别指南来支持 ElasticSearch?Lucene 或 Solr 的建议是好的起点吗?我们正在考虑从以下方面开始部署
- 2700 万份文档,8TB 数据
- 每天添加 30 万份文档
然后将其放大 10 倍,至
- 2.7 亿份文档,80TB 数据
- 每天添加 300 万份文档
这是一个奇怪的用例,其中查询次数将达到数千次/天,但响应时间需要保持足够低才能获得良好的 Ajaxy webapp 体验。
答案1
有很多因素都会发挥作用,所以我认为没有太多通用的指导原则。
您应该进行较小规模的评估,也许使用初始数据集的 1/5,以查看在设置时将预期的索引和搜索负载放在一起时情况如何。这将确保您了解您的数据在搜索引擎中实际占用多少空间。对于 elasticsearch,取决于您是否存储源 json 以及如何分析字段以及是否存储它们。
EC2 可以成为评估 elasticsearch 的合理方法,且不需要大量的硬件支出。
对于基于集群的软件(如 elasticsearch),在保持集群较小与较大之间需要权衡。大型集群很好,因为当您丢失服务器时,需要重新分配的数据较少。较小的集群消耗较少的能量,并且更易于维护。
我们运行一个包含 3500 万个文档的集群,总索引大小约为 300GB x 2,因为所有索引都是复制的。为了支持这个以及大量的搜索,我们有 4 个节点,每个节点有 24 个核心、48GB RAM 和 1TB 存储空间,并在 raid10 中配备 10K 个磁盘。我们最近增加了磁盘大小以确保我们有更多的空间。
对于您的情况,我建议增加 RAM 和磁盘空间。通过这样的搜索量,您可能可以节省 CPU 费用。
低搜索量实际上会损害性能,因为缓存(使用的软件和操作系统磁盘内部的缓存)不会得到很好的预热。
希望这有帮助,保罗