Elasticsearch小分支的分片分配

时间:2015-12-29 22:36:58

标签: elasticsearch sharding

我有一个弹性搜索设置,有192个活动索引,每个索引从几百mb到可能5gb。我读到对于带有1gb索引的logstash用例,你应该只使用1个分片。与我的设置的不同之处在于,我将拥有更多用户(估计高达100),期望快速响应时间。我打算为可靠性提供1个副本。

每个索引有一个分片是否仍然适合我的用例?

2 个答案:

答案 0 :(得分:2)

查看此博客:https://qbox.io/blog/optimizing-elasticsearch-how-many-shards-per-index。他有很多关于分片和碎片大小的好指示。

然而,你真正应该问自己的问题是:改变有多容易?当涉及到尺寸和可扩展性时,答案通常是"它取决于" - 真正的问题是:你能多快重新配置一次?

这可以是例如意味着你以一种方式设计你的应用程序,允许快速将数据重新假冒到一个新的索引,你使用别名,这样你实际上可以改变这些东西,你的数据所在(不仅仅是在弹性,我希望)等。

通过构建系统 - 从一开始 - 这样您就可以快速重建标记,使您能够体验大小 - 更重要的是 - 根据需求的变化进行更改。

答案 1 :(得分:1)

总之:是的。

创建多个主分片的需要源于隔离文档的需要,极端计数(例如,当您在数十亿个文档中时),或者提高写入吞吐量(在更多地方写入文档,从而减少个人数量)负担)。

实际上,您希望根据您的用例进行分片,除非您是前两种情况之一(隔离或极端计数)。

  • 你看重吗?
  • 你写得很重吗? (不常见,但确实发生了)

如果你读得很多,就像大多数用例一样,那么减少分片会通过限制请求大小(更少看的地方)来帮助你。鉴于您的分片大小也相对较小(我认为5 GB以下的任何东西都相对较小),您可以轻松地使用单个分片,它应该有利于您的搜索性能这样做。

如果您搜索,那么共享相同映射但也很小(“几百MB”)的索引应该可以合并。如果它们是独立的,那么它实际上没有任何区别,并且隔离听起来像是一种良好的做法,代价是略微膨胀你的集群状态(每个索引)。