Java 查询超过Gerrit REST API中的500限制
我正试图使用Java中的GerritRESTAPI,通过一个查询请求从一个特定分支获得2000个更改结果。问题是,无论我在查询搜索中添加什么,我只得到500个结果 我尝试了列出的选项,但没有得到我需要的2000个结果。我也读过这篇文章,但我更喜欢不需要绕道的方法。Java 查询超过Gerrit REST API中的500限制,java,gerrit,Java,Gerrit,我正试图使用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特有的;该错误消息在开源版本中不存在。