DBAtlas · Veritabanı operasyon atlası

Mapping değişikliğini sıfır kesintiyle yap (reindex + atomik alias geçişi)

ElasticsearchIndex Yaşam Döngüsü

Komut

# 1) Yeni mapping ile hedef index (yukleme icin refresh kapali, replica 0):
PUT musteri-v2
{
  "settings": { "number_of_shards": 1, "number_of_replicas": 0, "refresh_interval": "-1" },
  "mappings": { "properties": { "kod": { "type": "keyword" }, "adet": { "type": "long" } } }
}
# 2) Arka planda reindex (donen task id ile izlenir):
POST _reindex?wait_for_completion=false&slices=auto
{
  "source": { "index": "musteri-v1", "size": 1000 },
  "dest": { "index": "musteri-v2", "op_type": "create" },
  "conflicts": "proceed"
}
GET _tasks/<task_id>
# 3) Ayarlari geri al ve belge sayilarini karsilastir:
PUT musteri-v2/_settings
{
  "index": { "refresh_interval": null, "number_of_replicas": 1 }
}
POST musteri-v2/_refresh
GET _cat/indices/musteri-v1,musteri-v2?v&h=index,docs.count,pri.store.size
# 4) Alias'i tek atomik islemde yeni index'e cevir:
POST _aliases
{
  "actions": [
    { "remove": { "index": "musteri-v1", "alias": "musteri" } },
    { "add": { "index": "musteri-v2", "alias": "musteri", "is_write_index": true } }
  ]
}

Ne yapar?

Yeni mapping'li bir index oluşturur, veriyi arka planda reindex ile kopyalar, belge sayılarını karşılaştırır ve uygulamanın kullandığı alias'ı tek atomik işlemle yeni index'e çevirir.

Ne zaman kullanılır?

Var olan bir alanın tipini değiştirmek (text -> keyword, integer -> long), analyzer değiştirmek veya shard sayısını yeniden belirlemek gerektiğinde; bunlar mevcut index'te yerinde yapılamaz.

Dikkat

Uygulama index adına değil alias'a bağlanmış olmalıdır; aksi halde geçiş için deploy gerekir. Reindex sürerken kaynağa gelen yeni yazmalar hedefe geçmez: yazmaları durdur veya geçişten hemen önce op_type create + conflicts proceed ile reindex'i tekrar çalıştırıp farkı kapat (güncellemeler ve silmeler bu yolla taşınmaz). Reindex kaynak cluster'da okuma, hedefte yazma yükü oluşturur; requests_per_second ile kısıtla.

DBAtlas'ta aç →

İlgili