一尘不染

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

elasticsearch

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


阅读 476

收藏
2020-06-22

共1个答案

一尘不染

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

在ElasticSearch中:

max http request sizeES
GitHub代码中有一个,并将其设置为Integer.MAX_VALUE2^31-1。因此,基本上,
2GB是通过HTTP进行批量索引的最大文档大小 。此外,ES不会处理HTTP请求,直到它完成为止。

良好做法:

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

要进一步研究,请参考以下链接:

  1. Elasticsearch索引的性能注意事项

  2. 通过HTTP进行批量索引的文档最大大小

2020-06-22