Elasticsearch文档的最大大小是多少?

时间:2015-03-03 20:21:36

标签: elasticsearch

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

2 个答案:

答案 0 :(得分:37)

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

答案 1 :(得分:3)

多年来,Elasticsearch认为情况已经发生了些微变化。在此处引用的7.x文档中-General Recommendations

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

因此,ES似乎有大约100MB的限制,而Lucene的限制是2GB,这是另一个答案。