インデックス レイヤー からデータを削除します
RSQL クエリを使用して、インデックス レイヤーからデータおよびメタデータを削除できます。 deleteQuery 条件を満たすインデックス付きレコード(メタデータ)がインデックス レイヤーから削除されます。 インデックス付けされたレコードを削除すると、 blob に保存されている各データも 1 日後に自動的に削除されます。
インデックス レイヤーメタデータとデータの削除は非同期で比較的時間のかかるプロセスです。 たとえば、 deleteQuery を満たす 100 万レコードを含む削除要求がメタデータの削除を完了するまでに 1 時間かかることがあります。 blobstore の実際のデータは、メタデータの削除が完了してから 24 時間利用可能なままになり、完全に削除されます。
数百万件のレコードを含むインデックス レイヤー 内のすべてのデータを削除 する場合は、レイヤーを削除して再作成する方が短時間で済みます。
注
削除は非同期操作です。 削除リクエストを送信すると、削除の規模に基づいて削除アクションが数時間実行されることがあります。 削除アクションの進行中に、削除ステータスを照会できます。
インデックス レイヤーデータとメタデータを削除するには、次の手順を実行
- 認可トークンを取得します。
api-lookup
v1
API を使用して API ベースの URL を取得します。 index
v1
API を使用して、インデックス付けされたレコードと、削除クエリに一致する対応するデータを削除します。
認可トークン を取得します
HTTP 要求の認可トークンを取得します。 手順について は、『 Identity & Access Management Guide 』を参照してください。
API ベースの URL を取得します
API ルックアップサービスを使用 index
して、削除するデータハンドルを持つインデックス レイヤーが含まれているカタログの API の API エンドポイントを取得します。
手順については 、『 API Lookup 開発者ガイド』を参照してください。
データを削除します
データを削除するに index
は、 API で「 deleteQuery 」リクエストパラメータを指定して Delete アクションを実行する必要があります。
DELETE /<Base path for the index API from the API Lookup Service>/layers/<Layer ID>?deleteQuery=<RSQL> HTTP/1.1
Host: <Hostname for the index API from the API Lookup Service>
Authorization: Bearer <Authorization Token>
Accept: application/json
Cache-Control: no-cache
"deleteQuery" リクエストパラメータの \ のルールは 、インデックス レイヤーからデータを取得 -> セクションのデータ ハンドル " クエリー " リクエストパラメータと同じです。
上記の削除アクションを実行すると、応答に deleteId が返されます。 応答例 :
{
"deleteId": "f054dd41-51f2-4633-9a42-cbcf59cc24e1"
}
削除ステータスを問い合わせます
上記で取得した deleteId を使用して、送信した削除アクションのステータスを照会できます。
GET /<Base path for the index API from the API Lookup Service>/layers/<Layer ID>/deleteRequest/<Delete ID> HTTP/1.1
Host: <Hostname for the index API from the API Lookup Service>
Authorization: Bearer <Authorization Token>
Accept: application/json
Cache-Control: no-cache
次の 4 つのステータスのいずれかが表示されます。
- スケジュール済み
- 処理中です
- 成功しました
- 失敗しました
応答の例 :
{
"deleteId": "f054dd41-51f2-4633-9a42-cbcf59cc24e1",
"state": "Scheduled",
"message": "The delete request was successfuly scheduled.",
"count": 0
}
状態が「スケジュール済み」の場合、カウントは常に 0 になります。つまり、インデックスレコードはまだ削除されていません。
{
"deleteId": "f054dd41-51f2-4633-9a42-cbcf59cc24e1",
"state": "Processing",
"message": "The delete request is being executed.",
"count": 7289
}
状態が「処理中」の場合、カウントは現在削除されたインデックスレコードの数になります。
{
"deleteId": "f054dd41-51f2-4633-9a42-cbcf59cc24e1",
"state": "Succeeded",
"message": "The delete request finished successfuly. The number of deleted records is provided in the `count` field.",
"count": 13445
}
状態が [Succeeded] の場合、カウントは削除されたインデックスレコードの合計数になります。
注
- 削除ステータスは 14 日間保持されます。 14 日後に削除され、 deleteID のクエリー時に 404 エラーが発生します。
- インデックス レイヤー からデータが削除されてから、クエリーに使用できるようになるまでのバッファ時間は 2 秒です。 たとえば、 01:00:00 に削除リクエストを送信した後、 01:02:10 になるまで deleteID を定期的にクエリーします。 ただし、 01:02:11 で削除されたデータにクエリを実行しても、そのデータは返される可能性があります。 01 : 02 : 12 以降でクエリを実行すると、削除されたデータは返されなくなります。