7

希望这个问题没有过时,但我还没有在任何地方找到明确的答案。根据去年的 ES 演示文稿之一 ( http://www.elasticsearch.org/videos/big-data-search-and-analytics/ ),分片有一个“最大”大小。我正在尝试为我的应用程序确定这一点,但据我所知,我还没有成功。有谁知道达到最大值的单片索引的行为是什么?插入是否失败,或者仅仅是索引变得不可用?

4

1 回答 1

13

为了自己测试这一点,我将维基百科中的所有英文文章(没有任何历史信息)都编入了一个弹性搜索分片中。在测试结束时,elasticsearch 数据文件夹增长到 ~42GB。吸取的教训是:

  • 索引速度不会受到分片大小的影响。请注意,我没有尝试一次使用多个线程进行索引,但是在测试期间单线程索引速度或多或少是恒定的
  • 另一方面,查询速度受到分片大小的极大影响。尤其是当您尝试一次查询多个用户时。确切的数字在很大程度上取决于机器的能力、数据结构和查询的线程数。给你一个想法,在我的开发机器上运行 elasticsearch,查询具有 25 个并发用户的 Wikipedia 分片导致平均响应时间为 3.5 秒(峰值接近半分钟)。

我的结论是,一个太大的分片不会让 elasticsearch 仅仅因为索引而失败。查询大分片可能太慢,无法满足您的需求,或者在某些情况下,甚至会使用 OutOfMemoryException 破坏 elasticsearch(例如大面查询)。

这个答案是基于我自己的调查。完整的故事可以在我的博客上阅读:

http://blog.trifork.com/2013/09/26/maximum-shard-size-in-elasticsearch/
http://blog.trifork.com/2013/11/05/maximum-shard-size-in- elasticsearch-重访/

于 2013-11-05T15:38:08.283 回答