我有大量的索引类型的文档(大约34719074个文档)(ES 2.4.4)。在搜索过程中,当“ from”参数很高(大于100000,“ size”参数不变)时,我的ES群集似乎影响很大(搜索延迟,CPU使用率,JVM内存和平均负载)。有什么具体原因吗?我的查询如下:
{
"explain": false,
"size": 100,
"from": <>,
"_source": {
"excludes": [],
"includes": [
<around 850 fields>
]
},
"sort": [
<sorting from an string field>
]
}
答案 0 :(得分:0)
这是深度分页的经典问题。您可以阅读pagination in Elasticsearch上的链接。从本质上讲,在跳过100000个文档后获取下一组文档将是一项内存密集型任务,因为要获得100000+个文档的结果集,需要从每个分片中提取100000+个文档,然后进行处理(排序,排序等)。对较小的结果集进行排名/排序所花的时间要比对较大的结果集进行排序所花费的时间短。