我在用 elasticsearch
在我的 laravel
-我和app想从第三方api获取大量数据。我读过,我需要使用 scroll API
提供单位 elasticsearch
但我真的不知道如何正确使用它。数据量约为200万条记录。那我怎么去拿呢?
以下是我迄今为止所做的:
$query = '
{
"_source":[
"Company.*",
"Company.Metadata.*"
],
"query":{
"bool": {
"must": [
{
"match": {
"Company.Metadata.status": "active"
}
}
]
}
},
"size" : 1000
}
';
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $query);
curl_setopt($curl, CURLOPT_URL, "http://thirdpartyapidomain.com/_search?scroll=1m");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
curl_setopt($curl, CURLOPT_USERPWD, "user:mypassword");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$result = json_decode(curl_exec($curl));
curl_close($curl);
$hits = $result->hits->hits;
return $hits;
这给了我1000张唱片和 scroll_id
-但接下来该怎么办呢?
请帮帮我!
1条答案
按热度按时间kmbjn2e31#
要继续滚动,必须将此滚动id传递给滚动api,如下所示。在一个循环中不断地请求下面的内容,直到你不再得到响应。
为了使滚动上下文保持活动状态(以便下一个滚动请求不会失败),我们通过1m(1分钟)。将此值保留为当前批处理完成的范围。
您可以使用curl发出上述请求。在这里阅读更多的滚动。