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
インデックス作成時にルーティングが使用される場合、ドキュメントを削除するためにはルーティング値も指定する必要があります。
例えば:
#### Python
``````python
resp = client.delete(
index="my-index-000001",
id="1",
routing="shard-1",
)
print(resp)
`
Ruby
response = client.delete(
index: 'my-index-000001',
id: 1,
routing: 'shard-1'
)
puts response
Js
const response = await client.delete({
index: "my-index-000001",
id: 1,
routing: "shard-1",
});
console.log(response);
Console
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
resp = client.delete(
index="my-index-000001",
id="1",
timeout="5m",
)
print(resp)
Ruby
response = client.delete(
index: 'my-index-000001',
id: 1,
timeout: '5m'
)
puts response
Js
const response = await client.delete({
index: "my-index-000001",
id: 1,
timeout: "5m",
});
console.log(response);
Console
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ドキュメント1
をmy-index-000001
インデックスから削除します:
Python
resp = client.delete(
index="my-index-000001",
id="1",
)
print(resp)
Ruby
response = client.delete(
index: 'my-index-000001',
id: 1
)
puts response
Js
const response = await client.delete({
index: "my-index-000001",
id: 1,
});
console.log(response);
Console
DELETE /my-index-000001/_doc/1
Console-Result
{
"_shards": {
"total": 2,
"failed": 0,
"successful": 2
},
"_index": "my-index-000001",
"_id": "1",
"_version": 2,
"_primary_term": 1,
"_seq_no": 5,
"result": "deleted"
}