Elasticsearch:“一个索引具有多个分片”与“许多索引每个索引具有一个分片”

时间:2019-10-27 13:16:16

标签: elasticsearch bigdata elastic-stack elk

我的Elasticsearch硬件配置有3个节点:

  • 2个具有64GB RAM(其中30GB用于JVM),3TB HDD,每个8核的数据,主,接收节点;
  • 1个具有8GB RAM,500GB HDD,2个内核的主节点+协调节点。

我的数据是:

  • ≈50亿个文档,目前占用≈1.5-2TB的磁盘空间(一年将增长到10TB);
  • 复杂的结构,带有很多嵌套文档(包含在父文档中),文档中的字段也完全没有标准(并且不可能),因此索引映射很大;
  • 数据不是超时的(例如日志);

我需要能够在这些文档中的任何字段上进行搜索,搜索仅通过String Query API对所有文档执行。另外,在搜索过程中,我使用 sort highlighting total_hits_count 术语汇总

我个人尝试过两次存储pr的尝试:

  • 1个具有16个分片的索引-导致索引时间长,但搜索速度快。另外,节点经常崩溃,原因是(我认为)映射太大,并且节点上的RAM始终使用95-99。
  • 16个索引(每个索引带1个分片),并分配了别名-索引阶段执行得更快,但是搜索变得慢得多。 这是当前版本。

我不明白为什么在1x16上搜索比16x1快很多...


那么最后,根据提供的信息,将数据存储在ES中的最佳方法是什么?

当建议将碎片大小保持在20-50GB时,每个碎片目前的重量也为75-128GB,但是我看到了一些意见和建议,每个内核保留1个碎片。因此,也欢迎对此配置发表意见。

0 个答案:

没有答案