Delete API

指定されたインデックスからJSONドキュメントを削除します。

Request

DELETE /<index>/_doc/<_id>

Prerequisites

  • Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットインデックスまたはインデックスエイリアスに対してdeleteまたはwrite インデックス特権を持っている必要があります。

Description

DELETEを使用してインデックスからドキュメントを削除します。インデックス名とドキュメントIDを指定する必要があります。

データストリームに直接削除リクエストを送信することはできません。データストリーム内のドキュメントを削除するには、そのドキュメントを含むバックインデックスをターゲットにする必要があります。詳細については、バックインデックス内のドキュメントの更新または削除を参照してください。

Optimistic concurrency control

削除操作は条件付きにすることができ、if_seq_noおよびif_primary_termパラメータによって指定されたシーケンス番号とプライマリタームがドキュメントに最後に割り当てられた場合にのみ実行されます。不一致が検出された場合、操作はVersionConflictExceptionとなり、ステータスコード409が返されます。詳細については、楽観的同時実行制御を参照してください。

Versioning

インデックスされた各ドキュメントはバージョン管理されています。ドキュメントを削除する際に、versionを指定することで、削除しようとしている関連ドキュメントが実際に削除され、間に変更がないことを確認できます。ドキュメントに対して実行されるすべての書き込み操作(削除を含む)は、そのバージョンをインクリメントします。削除されたドキュメントのバージョン番号は、同時操作の制御を可能にするために、削除後しばらくの間利用可能です。削除されたドキュメントのバージョンが利用可能な期間は、index.gc_deletesインデックス設定によって決定され、デフォルトは60秒です。

Routing

インデックス作成時にルーティングが使用される場合、ドキュメントを削除するためにはルーティング値も指定する必要があります。

  1. 例えば:
  2. #### Python
  3. ``````python
  4. resp = client.delete(
  5. index="my-index-000001",
  6. id="1",
  7. routing="shard-1",
  8. )
  9. print(resp)
  10. `

Ruby

  1. response = client.delete(
  2. index: 'my-index-000001',
  3. id: 1,
  4. routing: 'shard-1'
  5. )
  6. puts response

Js

  1. const response = await client.delete({
  2. index: "my-index-000001",
  3. id: 1,
  4. routing: "shard-1",
  5. });
  6. console.log(response);

Console

  1. DELETE /my-index-000001/_doc/1?routing=shard-1

このリクエストはIDが1のドキュメントを削除しますが、ユーザーに基づいてルーティングされます。正しいルーティングが指定されていない場合、ドキュメントは削除されません。

Automatic index creation

外部バージョン管理のバリアントが使用されている場合、指定されたインデックスが存在しない場合、削除操作は自動的にそのインデックスを作成します。インデックスを手動で作成する方法については、インデックス作成APIを参照してください。

Distributed

削除操作は特定のシャードIDにハッシュ化されます。その後、そのIDグループ内のプライマリシャードにリダイレクトされ、必要に応じてそのIDグループ内のシャードレプリカに複製されます。

Wait for active shards

削除リクエストを行う際、wait_for_active_shardsパラメータを設定して、削除リクエストの処理を開始する前にアクティブなシャードコピーの最小数を要求できます。詳細と使用例については、こちらを参照してください。

Refresh

このリクエストによって行われた変更が検索に表示されるタイミングを制御します。詳細は?refreshを参照してください。

Timeout

削除操作を実行するために割り当てられたプライマリシャードが利用できない場合があります。これには、プライマリシャードが現在ストレージから回復中であるか、移動中であることが考えられます。デフォルトでは、削除操作はプライマリシャードが利用可能になるまで最大1分間待機し、その後失敗してエラーを返します。timeoutパラメータを使用して、待機時間を明示的に指定できます。5分に設定する例は次のとおりです:

Python

  1. resp = client.delete(
  2. index="my-index-000001",
  3. id="1",
  4. timeout="5m",
  5. )
  6. print(resp)

Ruby

  1. response = client.delete(
  2. index: 'my-index-000001',
  3. id: 1,
  4. timeout: '5m'
  5. )
  6. puts response

Js

  1. const response = await client.delete({
  2. index: "my-index-000001",
  3. id: 1,
  4. timeout: "5m",
  5. });
  6. console.log(response);

Console

  1. DELETE /my-index-000001/_doc/1?timeout=5m

Path parameters

  • <index>
  • (必須、文字列) ターゲットインデックスの名前。
  • <_id>
  • (必須、文字列) ドキュメントの一意の識別子。

Query parameters

  • if_seq_no
  • (オプション、整数) ドキュメントがこのシーケンス番号を持つ場合にのみ操作を実行します。詳細は楽観的同時実行制御を参照してください。
  • if_primary_term
  • (オプション、整数) ドキュメントがこのプライマリタームを持つ場合にのみ操作を実行します。詳細は楽観的同時実行制御を参照してください。
  • refresh
  • (オプション、列挙型) trueの場合、Elasticsearchは影響を受けたシャードをリフレッシュしてこの操作を検索可能にします。wait_forの場合、リフレッシュを待機してこの操作を検索可能にします。falseの場合、リフレッシュに対して何もしません。有効な値: true, false, wait_for。デフォルト: false
  • routing
  • (オプション、文字列) 操作を特定のシャードにルーティングするために使用されるカスタム値。
  • timeout
  • (オプション、時間単位) アクティブシャードを待つための期間。デフォルトは1m(1分)です。
  • version
  • (オプション、整数) 同時実行制御のための明示的なバージョン番号。指定されたバージョンは、リクエストが成功するためにドキュメントの現在のバージョンと一致する必要があります。
  • version_type
  • (オプション、列挙型) 特定のバージョンタイプ: external, external_gte
  • wait_for_active_shards
  • (オプション、文字列) 操作を進める前にアクティブでなければならないシャードコピーの数。allまたはインデックス内のシャードの総数(number_of_replicas+1)までの任意の正の整数に設定します。デフォルト: 1、プライマリシャード。
    アクティブシャードを参照してください。

Examples

JSONドキュメント1my-index-000001インデックスから削除します:

Python

  1. resp = client.delete(
  2. index="my-index-000001",
  3. id="1",
  4. )
  5. print(resp)

Ruby

  1. response = client.delete(
  2. index: 'my-index-000001',
  3. id: 1
  4. )
  5. puts response

Js

  1. const response = await client.delete({
  2. index: "my-index-000001",
  3. id: 1,
  4. });
  5. console.log(response);

Console

  1. DELETE /my-index-000001/_doc/1

APIは次の結果を返します:

Console-Result

  1. {
  2. "_shards": {
  3. "total": 2,
  4. "failed": 0,
  5. "successful": 2
  6. },
  7. "_index": "my-index-000001",
  8. "_id": "1",
  9. "_version": 2,
  10. "_primary_term": 1,
  11. "_seq_no": 5,
  12. "result": "deleted"
  13. }