我在AWS CloudSearch索引中擁有約150萬個文檔。這花費我太多,我希望從服務中遷移。我一直無法看到如何從索引下載或導出我的文檔。可能嗎?AWS CloudSearch導出/下載數據
5
A
回答
1
亞馬遜(仍然)不提供從Cloudsearch域導出所有數據的方式,但是,編寫一個實用程序來自己做這件事並不困難。
3
對於類似的需求,我必須瀏覽我的整個CloudSearch域(超過10000個限制)才能生成文件。
我用一個腳本的NodeJS來處理,就像這樣:
var AWS = require('aws-sdk');
var fs = require('fs');
AWS.config.update({
accessKeyId: '<yourAccessKey>', secretAccessKey: '<yourSecretAccessKey>',
region: '<yourRegion>',endpoint: '<YourSearchDomainEndPoint>'
});
var batchSize = 5000; //Number of item on every search... Max:10000
var compteur = 0;
var result = [];
var params = {query:""};
var cloudsearchdomain = new AWS.CloudSearchDomain(params);
function launchSearch(theContext) {
process.stdout.write('Launch AWS.CloudSearch ');
if (theContext==null) {
process.stdout.write('initial request ... ');
} else {
var current = (theContext.start/batchSize) +2 ;
var totalRun = (Math.ceil(theContext.found/batchSize * 10)/10) + 1;
process.stdout.write('(' + current + '/' + totalRun + ') ... ');
}
params = {
query:"-aQueryStringImpossibleToFind",
cursor: (theContext==null)?"initial":theContext.cursor,
size:batchSize
};
var forCursor = new AWS.CloudSearchDomain(params);
forCursor.search(params, function(err, data) {
if (err) {
console.log("Failed with params :");
console.log(err);
} else {
resultMessage = data;
compteur = compteur + data.hits.hit.length;
for(var i=0;i<data.hits.hit.length;i++){
result.push(data.hits.hit[i]
});
}
}
process.stdout.write(resultMessage.hits.hit.length + ' hits found.');
if (resultMessage.hits.hit.length==0) {
process.stdout.write(' Done.\n\nLet\'s create thte file...\n');
writeTheFile(result);
} else {
process.stdout.write('\n');
var myContext = {};
myContext.cursor = resultMessage.hits.cursor;
myContext.start = resultMessage.hits.start;
myContext.found = resultMessage.hits.found;
myContext.retrived = resultMessage.hits.hit.length;
launchSearch(myContext);
}
});
}
function writeTheFile(myResult) {
fs.writeFile(process.argv[2], JSON.stringify(myResult), function(err) {
if(err) {
return console.log(err);
}
});
process.stdout.write("DONE : File '"+ process.argv[2] + "' generated (" + compteur + " elements).\n");
}
/*Check parameters*/
if (!process.argv[2]) {
//console.log(process.argv);
process.stdout.write('ERROR : the output filename is expected as argumment.\n');
process.exit();
} else {
launchSearch();
}
這個腳本已經從命令行被稱爲:節點的script.js fileToCreate.json
注意:我不t知道這是否可以在一個150萬個文檔搜索域中正常工作。我預先考慮的風險是JSON可變大小。所以,這個腳本必須進行調整(也許一個文件每10萬個文件寫一次?)。
Nekloth
相關問題
- 1. AWS CloudSearch拋出EndpointConnectionError異常
- 2. AWS Cloudsearch奇怪的問題
- 3. AWS Elasticsearch和AWS CloudSearch有什麼區別?
- 4. Boto AWS CloudSearch返回排名/分數
- 5. 如何從.NET將數據上傳到AWS CloudSearch?
- 6. 從直接下載鏈接的數據庫導出數據
- 7. CodeIgniter:將數據從數據庫導出到Excel中並下載
- 8. 從aws s3導軌控制器下載
- 9. AWS S3下載計數器
- 10. 使用aws cloudsearch進行多個排除
- 11. AWS CloudSearch建議(自動完成)
- 12. AWS CloudSearch錯誤無需智能迴應
- 13. AWS CloudSearch:1域中的不同文檔?
- 14. 用AWS Cloudsearch取代Google Site Search
- 15. AWS Cloudsearch電子郵件查詢
- 16. 如何等待AWS Cloudsearch索引文檔?
- 17. 使用AWS CloudSearch查找類似詞語
- 18. 下載數據時出錯
- 19. 導入XML數據到AWS
- 20. AWS數據導入Excel?
- 21. 與PFFiles AWS S3誤差導入導出的解析數據後
- 22. AWS導入/導出和devpay
- 23. 下載SSRS批量導出
- 24. 如何處理AWS Cloudsearch中的CSV和文本數組?
- 25. 如何使用C#從mysql數據庫導出/下載表?
- 26. 數據存儲下載/導出到本地文件
- 27. Safari - 數據導出/ html下載屬性不起作用
- 28. 動態加載DLL導出的數據
- 29. Oracle - 自動導出/卸載數據
- 30. 從AWS EC2導出的抓取.csv文件到AWS MYSQL數據庫
這是什麼版本的API? – adaam