2013-08-28 23 views
3

我相信应该有一个公式来计算ElasticSearch中的批量索引大小。可能以下是这种公式的变量。节点的ElasticSearch中理想的批量大小公式是什么?

  • 碎片/索引的编号
  • 文档大小
  • RAM
  • 磁盘写入速度
  • LAN速度

我不知道是否有人知道或使用一个数学公式。如果不是,人们如何决定他们的体积大小?通过试验和错误?

回答

3

对此没有金科玉律。从文档中提取:

在单个批量调用中没有执行“正确”的操作次数。您应该尝试不同的设置以找到适合您特定工作负载的最佳尺寸。

+0

最终,人们需要调整。但是有什么数量级的想法吗?我们在说10s/100s/1000s吗?任何启动建议去? –

+1

我通常使用1K和5K文档之间的批量大小。 – moliware

4

我从Java API的BulkProcessor类派生了这个信息。它默认为1000个动作或5MB,它也允许你设置一个刷新间隔,但这并不是默认设置的。我只是使用默认设置。

如果您使用Java API,我建议使用BulkProcessor。

1

我正在寻找它,我发现你的问题:) 我发现这在弹性documentation ..所以我会调查我的文件的大小。

通常有必要关注批量请求的物理大小。一千个1KB文档与一千个1MB文档非常不同。一个很好的批量大小,开始在大小摆弄围绕5-15MB

2

ES 散装API文档小心:https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html#_using_and_sizing_bulk_requests

  • 尝试用1昆明植物研究所,尝试用20昆明植物研究所,然后与10 KiB,...二分法
  • 在KiB(或等价物)中使用批量大小,而不是文档计数!
  • 发送散装(无流)的数据,通过冗余信息API URL,如果你能
  • 在你的数据,如果可能的
  • 禁用搜索索引更新,删除多余的空格,激活回来后
  • 轮转跨越所有的数据节点