【问题标题】:What is the maximum Elasticsearch document size?Elasticsearch 文档的最大大小是多少?
【发布时间】:2015-05-04 15:50:35
【问题描述】:

我阅读了有关 Lucene 仅限于 2Gb 文档的说明。在 Elasticsearch 中可以索引的文档大小是否有任何其他限制?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    Lucene 在内部使用一个字节缓冲区,该缓冲区使用 32 位整数进行寻址。根据定义,这限制了文档的大小。所以理论上 2GB 是最大的。

    在 ElasticSearch 中:

    ES GitHub 代码中有一个max http request size,它是针对Integer.MAX_VALUE2^31-1 设置的。因此,基本上,2GB 是通过 HTTP 进行批量索引的最大文档大小。此外,ES 在完成之前不会处理 HTTP 请求。

    良好做法:

    • 如果可以,请不要使用非常大的 Java 堆:仅将其设置为必要的大小(理想情况下不超过机器 RAM 的一半)以容纳您使用 Elasticsearch 的总体最大工作集大小。这为操作系统留下剩余的(希望相当大的)RAM 来管理 IO 缓存。
    • 在客户端,始终使用批量 api,它在一个请求中索引多个文档,并尝试在每个批量请求中发送正确数量的文档。最佳大小取决于许多因素,但尽量朝着文档太少而不是太多的方向犯错。将并发批量请求与客户端线程或单独的异步请求一起使用。

    如需进一步研究,请参阅以下链接:

    1. Performance considerations for elasticsearch indexing

    2. Document maximum size for bulk indexing over HTTP

    【讨论】:

    【解决方案2】:

    想想这些年来,Elasticsearch 发生了一些微妙的变化。在此处引用的 7.x 文档中 - General Recommendations:

    鉴于默认 http.max_content_length 设置为 100MB,Elasticsearch 将拒绝索引任何大于该值的文档。您可能决定增加该特定设置,但 Lucene 仍然有大约 2GB 的限制。

    所以看起来 ES 的限制为 ~100MB,而 Lucene 的限制为 2GB,正如另一个答案所述。

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2021-04-27
      • 1970-01-01
      • 2013-02-26
      • 2012-06-30
      • 2011-03-13
      相关资源
      最近更新 更多