执行以下简单搜索请求:http://localhost:9200/_search?size=100000
我的堆使用量突然增加。由于查询不包含任何过滤器字段,聚合等,因此字段数据缓存和过滤后的缓存无法填充堆。我不明白堆使用量增加背后的原因是什么。
我怀疑是因为文件的_source
字段。但我不确定。我想知道幕后发生的事情。
最佳答案
不,是因为size=100000
。 Elasticsearch将为此数量的文档分配内存以作为结果存储。 100000是一个很大的数字。例如,如果将其降低到1000,则可能不会填满堆。
无论如何,使用size=100000
绝对是禁忌。不要那样做这不是Elasticsearch应该工作的方式。 Elasticsearch将以paginated way的方式逐页给您返回结果。或使用scan&scroll。无论如何都不要执行size=LARGE_NUMBER
。对于足够高的数目,可以通过使每个节点内存不足并抛出OutOfMemoryError
来关闭群集。
关于elasticsearch - Elasticsearch堆被填充以进行简单搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31402888/