1、首先,楼主这里的环境是:
es-php + es7.0
2、问题
如图所示,代码如下
我这边的数据量是15000的测试数据,当size 设置小于200是可以正常查询的,当size设置大于200,就报错:
Out of memory (allocated 364904448) (tried to allocate 262144 bytes)
虽然可以设置程序的内存,但是更想知道造成这个问题的原因是什么,还是说我哪里操作的有问题。
谢谢大佬们的解答!!
es-php + es7.0
2、问题
如图所示,代码如下
"scroll" => "1m",
"size" => 200, //给出的值超过200,就开始报错:Out of memory (allocated 364904448) (tried to allocate 262144 bytes)
我这边的数据量是15000的测试数据,当size 设置小于200是可以正常查询的,当size设置大于200,就报错:
Out of memory (allocated 364904448) (tried to allocate 262144 bytes)
虽然可以设置程序的内存,但是更想知道造成这个问题的原因是什么,还是说我哪里操作的有问题。
谢谢大佬们的解答!!
3 个回复
rochy - rochy_he
赞同来自: ljfphp
看情况是你一条记录也就是 _source 的内容比较大,所以一次返回 200 条的时候,每条记录的大小 * 200 > ES 设置的内存
当你只获取一个字段的时候,单个字段的大小 * 400 < ES 设置的内存
ljfphp - 叫我铁柱吧
赞同来自:
当我把搜索的字段压缩,只搜索一个字段的时候,size设置成400也没问题。那么意思是,一次预读的数据量太大了吗?scroll的大致运行原理我也知道一些,只是觉得挺奇怪的,毕竟ES是专门针对大数据的,我本地测试数据才15000,没道理啊
ljfphp - 叫我铁柱吧
赞同来自: