ElasticSearch中理想的批量大小公式是什么?

shy*_*yos 12 elasticsearch elasticsearch-bulk-api

我相信应该有一个公式来计算ElasticSearch中的批量索引大小.可能以下是这种公式的变量.

  • 节点数
  • 分片数/索引
  • 文件大小
  • 内存
  • 磁盘写入速度
  • 局域网速度

我想知道如果有人知道或使用数学公式.如果没有,人们如何决定他们的体积?通过反复试验?

mol*_*are 8

这没有黄金法则.从文档中提取:

在单个批量呼叫中没有"正确"的操作数量.您应该尝试不同的设置,以找到特定工作负载的最佳大小.

  • 最终,人们确实需要调整.但是有什么数量级的概念吗?我们在说10s/100s/1000s吗?有任何入门建议吗? (5认同)
  • 我通常使用1K到5K文档之间的批量大小。 (2认同)

hud*_*onb 6

我从Java API的BulkProcessor类派生了这些信息.它默认为1000个动作或5MB,它还允许您设置刷新间隔,但默认情况下不设置.我只是使用默认设置.

如果您使用的是Java API,我建议使用BulkProcessor.

  • 这是非常保守的。但是,您无法在不使用实际集群上的实际数据进行测试的情况下确定理想设置。如今(5 年后),我们拥有一个更大、更强大的集群,使用更大的批量大小(以 MB 为单位),没有文档限制。 (2认同)

小智 6

我正在搜索它,我发现了你的问题:)我在弹性文档中找到了这个 ..所以我将调查我的文档的大小。

关注批量请求的实际大小通常很有用。一千个 1KB 文档与一千个 1MB 文档有很大不同。开始使用的最佳批量大小约为 5-15MB


Chr*_*ssy 5

仔细阅读 ES 批量API文档https : //www.elastic.co/guide/zh-CN/elasticsearch/guide/current/indexing-performance.html#_using_and_sizing_bulk_requests

  • 尝试使用1 KiB,尝试使用20 KiB,然后尝试使用10 KiB,...二分法
  • 请使用KiB(或等效值)中的批量大小,而不要使用文件计数!
  • 批量发送数据(不发送数据流),如果可以的话,传递冗余的信息API网址
  • 如果可能,删除数据中多余的空格
  • 禁用搜索索引更新,稍后再激活
  • 遍历所有数据节点