一、ES刪除Index請求
在ES中刪除一個Index需要向ES發送一個DELETE請求,請求的URL包含要刪除的Index的名稱。如果請求成功,將會返回一個JSON響應,表示請求已經成功執行。
DELETE /index_name
其中:
/index_name:必須指定要刪除的Index的名稱。
二、ES刪除索引
使用ES API可以輕鬆刪除索引。在刪除索引之前,需要確保索引中沒有任何文檔或數據。以下是刪除索引的代碼:
# Python
from elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
es.indices.delete(index='index_name')
# CURL
curl -XDELETE 'http://localhost:9200/index_name'
三、ES刪除數據
在ES中,數據和文檔是等價的,因此如果需要刪除數據,也就是刪除文檔。ES提供了兩種方法可以刪除一個文檔,一種是基於文檔的ID,另一種是基於查詢刪除。
1. ES刪除文檔
基於文檔的ID刪除:
# Python es.delete(index='index_name', doc_type='doc_type', id='1') # CURL curl -XDELETE 'http://localhost:9200/index_name/doc_type/1'
其中:
index_name:需要刪除文檔的Index的名稱。doc_type:需要刪除文檔的類型。id:需要刪除文檔的ID。
2. ES刪除一條數據
基於查詢刪除:
# Python
es.delete_by_query(index='index_name', body={
'query': {
'match': {'fieldName': 'value'}
}
})
# CURL
curl -XPOST 'http://localhost:9200/index_name/_delete_by_query' -H 'Content-Type: application/json' -d '{"query": {"match": {"fieldName": "value"}}}'
其中:
index_name:需要刪除數據的Index的名稱。body:查詢條件。fieldName:需要匹配的字段名。value:需要匹配的字段值。
四、ES刪除字段
在ES中刪除一個字段,需要通過更新文檔的方式來實現。在更新文檔時,需要傳入新的文檔,但不需要包含要刪除的字段。在存儲新文檔後,ES會自動刪除原始文檔中的要刪除的字段。
# Python
body={
'doc': {
'field1': 'value1'
},
'script': 'ctx._source.remove("fieldName")'
}
es.update(index='index_name', doc_type='doc_type', id='1', body=body)
# CURL
curl -XPOST 'http://localhost:9200/index_name/doc_type/1/_update' -H 'Content-Type: application/json' -d '{"doc": {"field1": "value1"}, "script": "ctx._source.remove(\"fieldName\")"}'
其中:
field1:需要保留的字段。fieldName:需要刪除的字段。
五、ES刪除ES命令
在ES中,可以通過以下API查看已有的ES命令:
GET /_cat/aliases?v&s=name:asc
刪除ES命令也很簡單,只需要向ES發送DELETE請求,請求的URL包含要刪除的ES命令的名稱即可。
DELETE /_alias/existing_alias_name
其中:
/existing_alias_name:需要刪除的ES命令的名稱。
六、刪除ESIM後恢復
在ESIM(Elasticsearch Index Management)中,如果要刪除一個Index,可以通過以下命令:
DELETE ${index-name}
在刪除Index之前,可以通過以下命令備份Index:
POST /.deputy/${snapshot_name}
{
"source": {
"index": "${index_name}"
},
"name": "${snapshot_name}"
}
如果需要恢復Index,可以通過以下命令:
PUT /${restored_index_name}
{
"aliases": {
"${index_name}": {}
}
}
POST /.deputy/_restore/${snapshot_name}?wait_for_completion=true
{
"indices": "${restored_index_name}"
}
其中:
/deputy:備份的Index名稱。snapshot_name:備份的快照名稱。restored_index_name:要恢復的Index名稱。index_name:原始Index的名稱。
七、ES刪除索引下所有數據
刪除Index時,需要確保其中沒有任何文檔或數據。如果需要刪除Index下的所有數據,可以使用以下命令:
DELETE ${index_name}/_query
{
"query": {
"match_all": {}
}
}
其中:
index_name:需要刪除數據的Index的名稱。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256551.html
微信掃一掃
支付寶掃一掃