big*_*mus 30 amazon-web-services amazon-cloudsearch
我有一个我仍在开发的AWS CloudSearch实例.
有时,例如当我对字段的格式进行一些修改时,我发现自己想要消除所有数据并重新生成它.
有没有办法使用控制台清除所有数据,或者我必须通过程序方式来解决它?
如果我必须使用编程方法(即生成和POST一堆"删除"SDF文件)有什么好方法可以查询CloudSearch实例中的所有文档吗?
我想我可以删除并重新创建实例,但这需要一段时间,并丢失所有索引/等级表达式/文本选项/等
Kev*_*non 17
export CS_DOMAIN=https://yoursearchdomain.yourregion.cloudsearch.amazonaws.com
# Get ids of all existing documents, reformat as
# [{ type: "delete", id: "ID" }, ...] using jq
aws cloudsearchdomain search \
--endpoint-url=$CS_DOMAIN \
--size=10000 \
--query-parser=structured \
--search-query="matchall" \
| jq '[.hits.hit[] | {type: "delete", id: .id}]' \
> delete-all.json
# Delete the documents
aws cloudsearchdomain upload-documents \
--endpoint-url=$CS_DOMAIN \
--content-type='application/json' \
--documents=delete-all.json
Run Code Online (Sandbox Code Playgroud)
有关jq的更多信息,请参阅使用jq重塑JSON
2017年2月22日更新
添加--size
以一次获取最大文档数(10,000).您可能需要多次重复此脚本.此外,--search-query
如果您想要选择删除的文档,可以采取更具体的方法.
big*_*mus 15
我能够找到的最佳答案有点埋没在AWS文档中.以机智:
Amazon CloudSearch目前不提供删除域中所有文档的机制.但是,您可以克隆域配置以重新开始使用空域.有关更多信息,请参阅克隆现有域的索引选项.
来源:http://docs.aws.amazon.com/cloudsearch/latest/developerguide/Troubleshooting.html#ts.cleardomain
小智 5
在我这边,我使用了这样的本地 nodejs 脚本:
var AWS = require('aws-sdk');
AWS.config.update({
accessKeyId: '<your AccessKey>',
secretAccessKey: '<Your secretAccessKey>',
region: '<your region>',
endpoint: '<your CloudSearch endpoint'
});
var params = {
query:"(or <your facet.FIELD:'<one facet value>' facet.FIELD:'<one facet value>')",
queryParser:'structured'
};
var cloudsearchdomain = new AWS.CloudSearchDomain(params);
cloudsearchdomain.search(params, function(err, data) {
var fs = require('fs');
var result = [];
if (err) {
console.log("Failed");
console.log(err);
} else {
resultMessage = data;
for(var i=0;i<data.hits.hit.length;i++){
result.push({"type":"delete","id":data.hits.hit[i].id});
}
fs.writeFile("delete.json", JSON.stringify(result), function(err) {
if(err) {return console.log(err);}
console.log("The file was saved!");
});
}
});
Run Code Online (Sandbox Code Playgroud)
您必须至少知道 on facets 的所有值,才能请求所有 ID。在我的代码中,我只放了 2 个(在(或 ....)部分),但你可以有更多。
完成后,您将有一个delete.json文件,可使用以下命令与 AWS-CLI 一起使用:
aws cloudsearchdomain upload-documents --documents delete.json --content-type application/json --endpoint-url <your CloudSearch endpoint>
Run Code Online (Sandbox Code Playgroud)
...这对我有用!
内克洛斯
归档时间: |
|
查看次数: |
10151 次 |
最近记录: |