簡體   English   中英

ElasticSearch索引刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM