我正在为每台机器使用带有1G缓存的ElasticSearch集群。我将搜索者配置为5000 / perpage。
当我搜索第3页时,它花费大约400毫秒。但是当我搜索第300页时,成本增加到超过5000毫秒!在这种情况下,大约60%的缓存是免费的。
为什么费用增加了10倍以上?
答案 0 :(得分:8)
为了到目前为止的页面,Elasticsearch必须检索所有以前的页面,只是为了在最后丢弃它们。使用from: 1000, size: 100
进行搜索相当于使用from: 0, size: 100100
进行搜索,只需获得最后100个结果。这也意味着,必须对每个文档进行评分,这是一项潜在的昂贵操作。
最近有一项优化可以改善这种情况下的效果,当您使用scroll search时,请参阅此github issue。