ElasticSearch5.x 刪除資料

lee_lgw發表於2021-09-09

以下測試在elasticsearch5.6.10版本。

首先要說明的是ElasticSearch從2.x開始就已經不支援刪除一個type了,所以使用delete命令想要嘗試刪除一個type的時候會出現如下錯誤:

No handler found for uri [/dating_profile/zhenai/] and method [DELETE]

測試

假如存在一個名為dating_profile的index和zhenai的type:

curl -XDELETE http://192.168.1.102:9200/dating_profile/zhenai

執行後報錯如下:

圖片描述

所以現在如果想要刪除type有兩種選擇:

***1、***重新設定index。

***2、***刪除type下的所有資料。

如果重新設定index,官方建議:

Delete Mapping
It is no longer possible to delete the mapping for a type. Instead you should delete the index and recreate it with the new mappings.

刪除index

如下,刪除名為dating_profile的index:

curl -XDELETE http://192.168.1.102:9200/dating_profile/

圖片描述

刪除成功,返回值為:

{
 "acknowledged": true
}

刪除type下的所有資料

想要一次性刪除type為zhenai所有資料內容的話,可以參考官方文件:

其中有講到,可以透過_delete_by_query限制到一個單獨的type,如下,它僅僅會刪除index為dating_profile下type為zhenai下的所有資料:

curl -X POST "http://192.168.1.102:9200/dating_profile/zhenai/_delete_by_query?conflicts=proceed" -H 'Content-Type: application/json' -d'
{
 "query": {
   "match_all": {}
 }
}'

圖片描述

刪除成功,返回值如下:

{
 "took": 78,
 "timed_out": false,
 "total": 107,
 "deleted": 107,
 "batches": 1,
 "version_conflicts": 0,
 "noops": 0,
 "retries": {
   "bulk": 0,
   "search": 0
 },
 "throttled_millis": 0,
 "requests_per_second": -1.0,
 "throttled_until_millis": 0,
 "failures": []
}

也可以一次性刪除多個index和多個type下的文件,如下:刪除index為dating_profile下的type為zhenai的資料;同時刪除index為movies下的type為movie的資料。

curl -X POST "http://192.168.1.102:9200/dating_profile,movies/zhenai,movie/_delete_by_query" -H 'Content-Type: application/json' -d'
{
 "query": {
   "match_all": {}
 }
}
'

圖片描述

返回值如下:

{
 "took": 93,
 "timed_out": false,
 "total": 61,
 "deleted": 61,
 "batches": 1,
 "version_conflicts": 0,
 "noops": 0,
 "retries": {
   "bulk": 0,
   "search": 0
 },
 "throttled_millis": 0,
 "requests_per_second": -1.0,
 "throttled_until_millis": 0,
 "failures": []
}

題外話

5.xES提供的Reindex可以直接在搜尋叢集中對資料進行重建。如下可以直接修改mapping。

如下將index為dating_profile改為new_dating_profile

curl -XPOST "http://192.168.1.102:9200/_reindex?pretty" -H 'Content-Type: application/json' -d'
{
 "source": {
   "index": "dating_profile"
 },
 "dest": {
   "index": "new_dating_profile"
 }
}
'

這樣執行後,舊的index還是存在的,dating_profile和new_dating_profile都可以查到舊資料。

圖片描述


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2823960/,如需轉載,請註明出處,否則將追究法律責任。

相關文章