まだ開発中の AWS CloudSearch インスタンスがあります。
フィールドの形式を変更するときなど、すべてのデータを消去して再生成したい場合があります。
コンソールを使用してすべてのデータをクリアする方法はありますか? それともプログラム的な手段で実行する必要がありますか?
プログラム的な手段(つまり、大量の「削除」SDFファイルを生成してPOSTする)を使用する必要がある場合、クエリを実行する良い方法はありますか?全てCloudSearch インスタンス内のドキュメントですか?
私はできたインスタンスを削除して再作成するだけですが、これには時間がかかり、インデックス/ランク式/テキストオプションなどがすべて失われます。
ベストアンサー1
使用AWSそしてjqコマンドラインから(Mac 上の bash でテスト済み):
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
jqの詳細については、jq による JSON の整形
2017年2月22日更新
--size
一度に最大数のドキュメント (10,000) を取得するために追加されました。このスクリプトを複数回繰り返す必要がある場合があります。また、--search-query
削除するドキュメントを選択的に指定したい場合は、より具体的な方法を取ることもできます。