繁体   English   中英

通过Http调用在Elastic Search中索引文档时,PUT / POST数据的大小是否有限制?

[英]Is there any limit to the size of PUT/POST data while indexing documents in Elastic Search via Http call?

我正在使用Elastic Search 5.0.1创建大量更新的搜索应用程序,其中成千上万条记录被索引到弹性搜索中。 对于使用HttpURLConnection的 Java客户端中的多个索引,此操作每隔几秒钟就会发生一次。 我正在使用弹性搜索的Bulk API,为此我创建了一个PUT实体,其中包含行分隔的JSON字符串,如下所示(如Bulk API文档中所示 ):

action_and_meta_data\n
optional_source\n
action_and_meta_data\n
optional_source\n
....
action_and_meta_data\n
optional_source\n

但是,当文档数超过一定限制时,会出现以下异常:

java.io.IOException: Error writing to server
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:582)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:594)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1216)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)

正如我可以在此处检查的那样,PUT数据大小没有理论限制,只有客户端和服务器施加的限制。

Elastic Search服务是否施加任何此类限制? 如果是,那么这些限制是什么?如何更好地处理这种情况(修改服务器限制或批量查询)?

正如官方指南中指出的那样,没有严格的限制,应该尝试直到找到“正确的”限制。

从此链接可以看到:

尝试按大小递增的批次索引典型文档。 当性能开始下降时,您的批处理大小就太大了。 一个好的起点是批处理1,000至5,000个文档,或者如果文档非常大,则应批量较小。

但请注意:

一千个1KB文件与一千个1MB文件有很大的不同。 可以开始播放的大容量文件约为5-15MB。

在这里,您可以找到有关批量请求性能优化的官方提示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM