鉴于我的查询将返回100,000个匹配记录,但对于每个页面,我只想返回100条记录:
{
"from": 0,
"size": 100,
//and here goes the usual stuff
}
假设查询的复杂性是一致的,我观察到当"来自"增加,处理和产生产量所需的时间也将显着增加。
如果我从第一个记录开始,所花费的时间大约是100毫秒++,但是如果它从让我们说的32,188开始,那么所用的时间会增加一倍或者更长到300毫秒++。
这是预期的行为吗?可以做些什么来改善和缩短所花费的时间?
答案 0 :(得分:2)
是的,这绝对是正常行为。您遇到的问题称为。您应该只对前几页使用from/size
,但不要在结果中导航太远。这样做的原因是,您需要检索的结果越多,需要检索更多的结果只返回一些。最糟糕的情况是检索100个结果的最后一页。在这种情况下,需要从所有分片中检索所有100K文档(用于排序和评分),然后只返回前100个匹配文档。
如果您需要查看所有文档,最好的方法是使用"deep paging"。