Elasticsearch堆被填充以进行简单搜索

时间:2015-07-14 09:33:21

标签: elasticsearch lucene heap-memory

执行以下简单搜索请求: http://localhost:9200/_search?size=100000

我的堆使用量突然增加了。由于查询不包含任何过滤字段,聚合等,因此字段数据缓存和过滤缓存无法填充堆。我不明白堆使用量增加的原因是什么。

我怀疑这是因为_source字段的文件。但我不确定。我想知道背后发生了什么。

1 个答案:

答案 0 :(得分:3)

不,这是因为size=100000。 Elasticsearch将为该数量的文档分配内存以作为结果存储。 100000是一个很大的数字。例如,如果将其降低到1000,可能就不会填满堆了。

无论如何,使用size=100000是一个强烈的禁忌。不要那样做。这不是Elasticsearch的工作方式。 Elasticsearch将逐页向您提供paginated way的结果。或者使用scan&scroll。无论如何,永远不要size=LARGE_NUMBER。对于足够高的数字,您可以通过使每个节点内存不足并抛出OutOfMemoryError来关闭群集。