Java 查询超过Gerrit REST API中的500限制

Java 查询超过Gerrit REST API中的500限制,java,gerrit,Java,Gerrit,我正试图使用Java中的GerritRESTAPI,通过一个查询请求从一个特定分支获得2000个更改结果。问题是,无论我在查询搜索中添加什么,我只得到500个结果 我尝试了列出的选项,但没有得到我需要的2000个结果。我也读过这篇文章,但我更喜欢不需要绕道的方法。 所以我想知道的是: 是否可以在不需要联系管理员的情况下增加限额 如果没有。是否可以继续/重复查询以获得我想要的剩余1500个结果,使用一个循环对前一个查询中的以下500个结果执行查询,直到最终获得总共2000个结果 我几乎也有同样的问

我正试图使用Java中的GerritRESTAPI,通过一个查询请求从一个特定分支获得2000个更改结果。问题是,无论我在查询搜索中添加什么,我只得到500个结果

我尝试了列出的选项,但没有得到我需要的2000个结果。我也读过这篇文章,但我更喜欢不需要绕道的方法。
所以我想知道的是:

  • 是否可以在不需要联系管理员的情况下增加限额
  • 如果没有。是否可以继续/重复查询以获得我想要的剩余1500个结果,使用一个循环对前一个查询中的以下500个结果执行查询,直到最终获得总共2000个结果

  • 我几乎也有同样的问题。但是,正如您所提到的,您不希望admin增加查询限制,也不希望在与计数器的循环中启动rest查询。我建议您遵循第二种方法,使用计数器集在循环中启动查询。这就是我在Java中实现rest客户机的方式。

    使用时,结果作为列表返回。如果返回的结果多于返回的结果,则该列表中的最后一个条目将有一个
    \u more\u changes
    字段,其值为
    true
    。然后,您可以再次查询并设置
    开始
    选项以跳过您已经收到的内容。

    我想为添加一个小的解决方法

    如果你想抓取谷歌服务器上托管的Gerrit实例(如Android、Chromium、Golang),你会注意到它们会阻止超过10000个结果的查询。您可以通过以下方式进行检查:

    curl "https://android-review.googlesource.com/changes/?q=status:closed&S=10000"
    
    我以这样一种方式解决了这个问题,我将这些更改列表拆分为一个查询字符串,例如lie

    _url_/changes/?q=after:{2018-01-01 00:00:00.000} AND before:{2018-01-01 00:59:99.999}
    _url_/changes/?q=after:{2018-01-01 01:00:00.000} AND before:{2018-01-01 01:59:99.999}
    _url_/changes/?q=after:{2018-01-01 02:00:00.000} AND before:{2018-01-01 02:59:99.999}
    
    等等。我想你明白了请注意,这两个限制(
    之前:
    之后:
    )都包含在内!我每天都使用David描述的分页

    一个很好的副作用是,您可以跟踪爬行的进度


    我写了一个小程序来抓取开源实例。请随意使用,采用它,并向我发送拉请求

    我已经用Python实现了一个爬虫程序。如果这对您有帮助,请告诉我。API仍然会阻止超过500个条目。对,它会将每个查询的结果限制为500个条目。如果结果超过500个,您必须使用
    start
    选项执行多个查询。尝试调用此项
    https://android-review.googlesource.com/q/status:open,10000
    你就会明白我的意思了。:-)这根本不起作用,它只返回评论站点的HTML。尝试类似于:
    curl的方法https://android-review.googlesource.com/changes/?q=status:open
    将返回500个结果,然后
    curl“https://android-review.googlesource.com/changes/?q=status:open&S=501“
    它将返回下一个500。好的,看来我们谈论的是稍微不同的事情。FWIW我认为
    不能超过10000个结果(在过滤可见性之后)
    错误是谷歌内部版本Gerrit特有的;该错误消息在开源版本中不存在。