【问题标题】:ES returns only 10 records by default. How to get all records without using scroll APIES 默认只返回 10 条记录。如何在不使用滚动 API 的情况下获取所有记录
【发布时间】:2018-01-16 12:10:11
【问题描述】:

当我们向 ES 查询记录时,它默认返回 10 条记录。如何在不使用任何滚动 API 的情况下获取同一查询中的所有记录。

有一个选项可以指定尺寸,但尺寸是事先不知道的。

【问题讨论】:

    标签: elasticsearch elasticsearch-query


    【解决方案1】:

    您可以在一个请求中检索多达 10k 个结果(设置 "size": 10000)。如果您的匹配文档少于 10k,则可以使用 from/size parameters 的组合对它们进行分页。如果更多,那么您将不得不使用其他方法:

    请注意,from + size 不能超过 index.max_result_window 索引设置,默认为 10,000。请参阅ScrollSearch After API,了解更有效的深度滚动方式。

    为了能够对未知数量的文档进行分页,您必须从第一个返回的查询中获取总计数。

    请注意,如果数据同时发生变化,则分页检索的结果可能会不一致(例如,如果在分页时插入或删除了一个文档)。滚动是一致的,因为它是从查询开始时创建的索引的“快照”创建的。

    【讨论】:

    • 感谢您解释分页和滚动之间的区别,这真的很有帮助。
    猜你喜欢
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2023-03-27
    相关资源
    最近更新 更多