我在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