AWS CloudSearch からすべてのデータを消去するにはどうすればいいですか? 質問する

AWS CloudSearch からすべてのデータを消去するにはどうすればいいですか? 質問する

まだ開発中の 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削除するドキュメントを選択的に指定したい場合は、より具体的な方法を取ることもできます。

おすすめ記事