我正在使用Logstash Input Plugin exec定期运行命令来获取JIRA数据。即使我设置了maxResults = 99999,也只返回1000个结果。这是我现在的代码:
input {
exec {
command => "curl -u username:password https://mycompany.atlassian.net/rest/api/latest/search?project=project&maxResults=8500"
interval => 300
type => "issues"
}
} output {
elasticsearch {
hosts => "localhost:9200"
index => "jira"
}
}
我在网上发现,如果你运行大约10个高手,并且你将startAt设置为0,1000,2000等,你会得到大约10000个响应。这比仅仅一个提取8000个请求的exec更快吗?如何使用1个exec返回1000多个响应?
答案 0 :(得分:2)
@ alpert的答案是正确的,但我会添加更多细节。
JIRA的REST API(以及大多数其他api)支持分页,以防止API的客户端对应用程序施加过多负载。这意味着您不能只使用1个REST调用来提取所有问题数据。
您只能使用分页查询参数 startAt 和 maxResults 检索最多1000个问题的“页面”。请参阅分页部分here。
如果您运行JIRA独立服务器,那么您可以调整JIRA返回的最大结果数,但对于云实例,这是不可能的。有关详细信息,请参阅此KB article。
您的logstash配置显示您定期将项目的所有JIRA问题转储到ElasticSearch中。除了使用JIRA GET / issue REST API调用之外,可能有更好的方法来实现您正在尝试的操作。那么你在ElasticSearch中使用什么数据呢?
可能有一种方法可以在JIRA中执行您需要的操作,或者您可以寻找更方便的方法来导出所有JIRA数据,例如:使用export functionality。
答案 1 :(得分:1)
Unfortunately it is not possible to change this value as it falls under customizations which are not allowed in Atlassian Cloud.
似乎最好的方法是使用startAt
aproach。
答案 2 :(得分:1)
<?php
$username="JIRA Email";
$password="JIRA Password";
$handle = curl_init();
$project_url="https://jirasite.atlassian.net/rest/api/2/search?jql=project='project id'&maxResults=100";
$project_url=trim($project_url);
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt_array($handle, array(
CURLOPT_URL => $project_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_HTTPHEADER => array("content-type:application/json"),
CURLOPT_HEADER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_ENCODING => '',
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => $username . ':' . $password
));
$response = curl_exec($handle);
print_r($response);
&GT?; 响应Wille {&#34;扩大&#34;:&#34;模式,名称&#34;&#34; startAt&#34;:0,&#34;的maxResults&#34;:100,&#34;总&#34 ;:52,&#34;问题&#34;:[{&#34;扩大&#34;:............