[英]ElasticSearch index deletion
我正在使用Java API從ElasticSearch刪除舊索引。
Client client = searchConnection.client
DeleteIndexResponse delete = client.admin().indices().delete(new DeleteIndexRequest('location')).actionGet();
在刪除過程中,群集一分鍾變成紅色,並且沒有索引新數據-原因是“缺少索引/副本等”。
我如何才能告訴ElasticSearch我將其刪除以防止出現“紅色狀態”?
您可以使用別名以從下面的真實索引中提取內容。 這個想法是從別名讀取並改為寫入別名。 這樣,您可以創建一個新索引,將寫別名交換到新索引(這樣就不會破壞索引過程),然后刪除舊索引。 在流程方面,它將像這樣:
上下文:您當前的location
索引具有location_active
別名,索引過程將寫入location_active
別名,而不是直接寫入location
索引。
步驟1:建立新的location_112015
索引
curl -XPUT localhost:9200/location_112015
步驟2:將location_active
別名從“舊” location
索引交換為在步驟1中創建的“新” location
索引
curl -XPOST 'http://localhost:9200/_aliases' -d '{
"actions" : [
{ "remove" : { "index" : "location", "alias" : "location_active" } },
{ "add" : { "index" : "location_112015", "alias" : "location_active" } }
]
}'
請注意,此操作是原子操作,因此,如果索引編制過程不斷將新文檔發送到location_active
,則此操作將是透明的,並且不會丟失任何文檔,也不會引發任何錯誤。
步驟3:刪除舊索引
curl -XDELETE localhost:9200/location
步驟4:根據需要沖洗並重復一次
注意:這些操作也可以通過Java客戶端庫輕松執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.