Ana içeriğe atla
Apinizer’ın güncel index ve mapping type’larına bu sayfadan erişebilirsiniz.

Yapılacaklar

1. Mapping’de Field Type Görüntüleme

curl --location --request GET 'http://<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-<XXXX>/_field_caps?fields=hr1ra'

2. Yeni Template Oluşturulması

Apinizer’da bu işlem 2022.12.01 versiyonunda kod ile yapıldı, bu düzenlemeyi manuel yapmak için lütfen şu adresi inceleyiniz:Elasticsearch Index Templates

3. ILM Poll Interval Ayarlama

Yeni template’in geçerli olabilmesi için ILM’nin kriterinin ekrandan değiştirilmesi ve yeni indekse geçmesi için arkaplanda servis trafiğinin akmaya devam etmesi gerekir. Bunun da hemen yansıması için aşağıdaki kod ile poll_interval’in düşürülmesi işleri hızlandırır:
curl --location --request PUT 'http://<ELASTICSEARCH_IP>:9200/_cluster/settings' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "persistent": {
      "indices.lifecycle.poll_interval": "10s"
    }
  }'

4. ILM Poll Interval’i Eski Haline Alma

Değişiklik yansıyıp yeni index oluştuktan sonra ILM’nin ve poll_interval’in eski haline alınması gerekir:
curl --location --request PUT 'http://<ELASTICSEARCH_IP>:9200/_cluster/settings' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "persistent": {
      "indices.lifecycle.poll_interval": null
    }
  }'

5. Reindex İşlemi

Reindex işlemi ile datastream’deki eski mapping type’da kalan index’in “reindexed” olarak başka bir index’e taşınması:
Reindekste yeni mapping kullanılacak. Yeni mapping template’den alınacağı için template’in geçerli olabilmesi için yeni indexin adının “apinizer-log-apiproxy--” içermesi gerekli.
curl --location --request POST 'http://<ELASTICSEARCH_IP>:9200/_reindex' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "conflicts": "proceed",
    "source": {
      "index": ".ds-apinizer-log-apiproxy-test-000001"
    },
    "dest": {
      "index": ".ds-apinizer-log-apiproxy-test-000001-reindexed",
      "op_type": "create"
    }
  }'

6. Eski Index’i Silme

Eski mapping type’da kalan indexin silinmesi:
curl --location --request DELETE 'http://<ELASTICSEARCH_IP>:9200/.ds-apinizer-log-apiproxy-test-000001'
Eğer yeni indeksi mevcut sistemden farklı bir isim ile oluşturursanız aşağıdaki adımlarla devam etmeniz gerekmektedir.Aşağıdaki adımlarda, yukarıdaki isimlemenin “.ds” ifadesini kapsamadığı varsayılarak devam edilmiştir.

7. Farklı İsimle Oluşturulan Index İçin Ek Adımlar

“apinizer-log-apiproxy-test-000001-reindexed” isimli index’e taşınan verilerin manager üzerinde görüntülenebilmesi için isminin değiştirilmesi gerekir.

Yeni Index’i Read-Only Moda Alma

curl --location --request PUT 'http://<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-test-000001-reindexed/_settings' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "settings": {
      "index.blocks.write": "true"
    }
  }'

Yeni Indexi Orijinal İsme Klonlama ve Read-Only Moddan Çıkarma

curl --location --request PUT 'http://<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-test-000001-reindexed/_clone/.ds-apinizer-log-apiproxy-test-000001' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "settings": {
      "index.blocks.write": null 
    }
  }'

Hedef Index’in Durumunu Kontrol Etme

Hedef indeksin durumu green olana kadar beklenir:
GET /_cluster/health/target_index?wait_for_status=green&timeout=30s

Sorun Kontrolü

Normalde hızlıca gerçekleşen bu işlem uzun süre alıyorsa aşağıdaki komutlar ile sorun var mı diye kontrol yapılır:
GET /_cat/indices/target_index
GET /_cat/recovery/target_index
GET /_cluster/allocation/explain

Eski Index’i Silme

curl --location --request DELETE 'http://<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-test-000001-reindexed'

ILM Politikası Ekleme

Reindex yapsaydık template’den dolayı ILM otomatik yakalanır ve eklenirdi, fakat clone yaptığımızda sadece adı değişti diğer tüm ayarlar olduğu gibi yenisine geçti. ILM kontrol ettiğimizde boş olduğunu görürüz:
curl -X GET "http://<ELASTICSEARCH_IP>:9200/.ds-apinizer-log-apiproxy-test-000001/_ilm/explain?pretty"
Bu yüzden yeni index’e ILM’nin eklenmesi gerekir:
curl -X PUT "http://<ELASTICSEARCH_IP>:9200/.ds-apinizer-log-apiproxy-test-000001/_settings?pretty" \
  -H 'Content-Type: application/json' \
  -d '{
    "index": {
      "lifecycle": {
        "name": "apinizer-log-ilm-policy-test"
      }
    }
  }'
Reindeks işlemi için detaylı bilgi: Elasticsearch Reindex API