【发布时间】:2018-01-16 12:10:11
【问题描述】:
当我们向 ES 查询记录时,它默认返回 10 条记录。如何在不使用任何滚动 API 的情况下获取同一查询中的所有记录。
有一个选项可以指定尺寸,但尺寸是事先不知道的。
【问题讨论】:
标签: elasticsearch elasticsearch-query
当我们向 ES 查询记录时,它默认返回 10 条记录。如何在不使用任何滚动 API 的情况下获取同一查询中的所有记录。
有一个选项可以指定尺寸,但尺寸是事先不知道的。
【问题讨论】:
标签: elasticsearch elasticsearch-query
您可以在一个请求中检索多达 10k 个结果(设置 "size": 10000)。如果您的匹配文档少于 10k,则可以使用 from/size parameters 的组合对它们进行分页。如果更多,那么您将不得不使用其他方法:
请注意,
from+size不能超过 index.max_result_window 索引设置,默认为 10,000。请参阅Scroll 或Search After API,了解更有效的深度滚动方式。
为了能够对未知数量的文档进行分页,您必须从第一个返回的查询中获取总计数。
请注意,如果数据同时发生变化,则分页检索的结果可能会不一致(例如,如果在分页时插入或删除了一个文档)。滚动是一致的,因为它是从查询开始时创建的索引的“快照”创建的。
【讨论】: