> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Elasticsearch

> Elasticsearch bağlantılarını yapılandırır ve yönetir. REST tabanlı log, metrik ve arama verilerini merkezi cluster'a iletebilir, index ve yaşam döngüsü yönetimi gerçekleştirebilir

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={2}>
      <Card title="Merkezi Veri İletimi" icon="database">
        Connection (Bağlantı) Integration Flow veya Connector adımlarının log, metrik ve arama verilerini merkezi Elasticsearch cluster'ına iletir.
      </Card>

      <Card title="Yüksek Erişilebilirlik" icon="network-wired">
        Çoklu host (HTTP/HTTPS) tanımıyla yüksek erişilebilirlik sağlayan REST isteklerini yönetir.
      </Card>

      <Card title="Otomasyon" icon="gear">
        Index Template ve Index Lifecycle Policy (ILM) otomasyonuyla cluster yönetişimini standartlaştırır.
      </Card>

      <Card title="Bakım Görevleri" icon="wrench">
        Rollover, template oluşturma ve policy senkronizasyonu gibi bakım görevlerini tek tuşla tetikler.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="play">
        Integration Flow veya Connector içerisinden Elasticsearch Connection (Bağlantı) talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur.
      </Card>

      <Card title="Connection Pool Yönetimi" icon="layer-group">
        HTTP client, `ioThreads`, `maxConnectionPerHost` ve `maxConnectionTotal` değerlerine göre pool'dan uygun bağlantıyı seçer veya yenisini açar.
      </Card>

      <Card title="Kimlik Doğrulama" icon="shield">
        Basic Authentication sağlandığında kullanıcı adı/şifre gönderilir; aksi halde anonim erişim veya IP tabanlı güvenlik kullanılır.
      </Card>

      <Card title="Veri İletişimi" icon="arrows-rotate">
        REST endpoint'lerine HTTP/HTTPS üzerinden JSON gövdeli CRUD istekleri gönderilir; socket ayarları (keep-alive, reuse) aktarım sürekliliğini sağlar.
      </Card>

      <Card title="Bağlantı Yönetimi" icon="gear">
        İşlem tamamlanınca bağlantı pool'a geri döner, açık socket'ler keep-alive süreleri dolunca kapanır.
      </Card>

      <Card title="Hata Yönetimi" icon="triangle-exclamation">
        Bağlantı hatası, timeout veya authentication hatasında Apinizer Message Service bilgilendirme üretir; deployment result diyalogunda detay gösterilir.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Gateway Logları" icon="file-lines">
        Gateway loglarını merkezi Elasticsearch indekslerine yazmak
      </Card>

      <Card title="Arama/Raporlama" icon="magnifying-glass">
        Arama/raporlama amacıyla okuma-only cluster'lara erişmek
      </Card>

      <Card title="ILM ve Template Otomasyonu" icon="gear">
        ILM ve template otomasyonu gerektiren yüksek hacimli log kümelerini yönetmek
      </Card>

      <Card title="Disaster Recovery" icon="rotate">
        Disaster recovery veya geo-yedekli Elasticsearch kümelerine trafik yönlendirmek
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Teknik Özellikler ve Yetenekler

<AccordionGroup>
  <Accordion title="Temel Özellikler">
    <CardGroup cols={2}>
      <Card title="Çoklu Host Yönetimi" icon="network-wired">
        HTTP/HTTPS scheme, host ve port kombinasyonları ile cluster node'ları arasında yük dağıtımı sağlar.
      </Card>

      <Card title="Index Şablonu Otomasyonu" icon="file-code">
        Shard/replica sayıları ve refresh interval değerleri UI üzerinden yönetilir.
      </Card>

      <Card title="İdari İşlemler" icon="gear">
        `Administrate` seçeneği açıkken Index Template, ILM Policy oluşturma ve rollover tetikleme butonları etkinleşir.
      </Card>

      <Card title="Ortam Bazlı Yapılandırma" icon="code-branch">
        Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
      </Card>

      <Card title="Enable/Disable Kontrolü" icon="toggle-on">
        Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İleri Düzey Özellikler">
    <CardGroup cols={2}>
      <Card title="İndeks Yaşam Döngüsü Düzenleyicisi" icon="calendar">
        Hot/Warm/Cold/Delete fazları için yaş, boyut ve replikasyon eşikleri modal üzerinden kontrol edilir.
      </Card>

      <Card title="TLS Sertifika Esnekliği" icon="shield">
        PKCS#12 veya PEM tabanlı CA/keystore dosyaları yüklenerek SSL/TLS iletişimi güvenceye alınır.
      </Card>

      <Card title="Okuma/Yazma Modu" icon="toggle-on">
        `READ_WRITE` modunda administrate işlemleri aktif, `READ` modunda yalnızca sorgu yapılır.
      </Card>

      <Card title="Connection Test Özelliği" icon="flask">
        "Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
      </Card>

      <Card title="Export/Import Özelliği" icon="file-export">
        Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parametreleri

<AccordionGroup>
  <Accordion title="Zorunlu Parametreler">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Açıklama:** Connection adı (benzersiz olmalı)\
        **Örnek Değer:** `Production_ElasticLog`\
        **Notlar:** Boşlukla başlamaz, özel karakterler kullanılmamalı
      </Card>

      <Card title="Index Name" icon="file-lines">
        **Açıklama:** Logların yazılacağı indeks adı\
        **Örnek Değer:** `apinizer-log-apiproxy-default`\
        **Notlar:** Administrate açıkken otomatik oluşturulur; çakışmalar kontrol edilir
      </Card>

      <Card title="Elastic Host (Host & Port)" icon="server">
        **Açıklama:** Her host için scheme/host/port\
        **Örnek Değer:** `HTTPS : es-prod-01 : 9243`\
        **Notlar:** En az bir host zorunlu; host ve port alanları boş bırakılamaz
      </Card>

      <Card title="Connection Timeout (ms)" icon="clock">
        **Açıklama:** Bağlantı kurulumu için bekleme süresi\
        **Örnek Değer:** 5000\
        **Notlar:** Varsayılan 5000; negatif değer kabul edilmez
      </Card>

      <Card title="IO Threads" icon="microchip">
        **Açıklama:** HTTP istemci iş parçacığı sayısı\
        **Örnek Değer:** 32\
        **Notlar:** Minimum 1; yüksek trafik için artırılmalı
      </Card>

      <Card title="Max Connection Per Host" icon="network-wired">
        **Açıklama:** Host başına eşzamanlı istek sınırı\
        **Örnek Değer:** 128\
        **Notlar:** Minimum 1
      </Card>

      <Card title="Max Connection Total" icon="layer-group">
        **Açıklama:** Toplam connection havuzu sınırı\
        **Örnek Değer:** 256\
        **Notlar:** Minimum 1
      </Card>

      <Card title="Connection Type" icon="toggle-on">
        **Açıklama:** `READ_WRITE` veya `READ` modu\
        **Örnek Değer:** READ\_WRITE\
        **Notlar:** `READ` seçilirse administrate devre dışı kalır
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={2}>
      <Card title="Description" icon="file-text">
        **Açıklama:** Connection amacı açıklaması\
        **Varsayılan Değer:** Boş\
        **Önerilen Değer:** Operasyonel bilgi içeren kısa metin
      </Card>

      <Card title="Authenticate" icon="shield">
        **Açıklama:** Basic Authentication aç/kapa\
        **Varsayılan Değer:** false\
        **Önerilen Değer:** Production'da gereksinime göre true
      </Card>

      <Card title="Elastic Username" icon="user">
        **Açıklama:** Kullanıcı adı\
        **Varsayılan Değer:** Boş\
        **Önerilen Değer:** Authentication aktifse zorunlu
      </Card>

      <Card title="Elastic Password" icon="lock">
        **Açıklama:** Parola\
        **Varsayılan Değer:** Boş\
        **Önerilen Değer:** Secret manager üzerinden girilmesi önerilir
      </Card>

      <Card title="Administrate" icon="gear">
        **Açıklama:** Template/ILM yönetimi\
        **Varsayılan Değer:** true (READ\_WRITE)\
        **Önerilen Değer:** Harici ekip yönetiyorsa kapatılabilir
      </Card>

      <Card title="Socket Keep Alive" icon="signal">
        **Açıklama:** TCP keep-alive\
        **Varsayılan Değer:** true\
        **Önerilen Değer:** Ağ cihazları idle bağlantıları düşürüyorsa açık bırakın
      </Card>

      <Card title="Socket Reuse Address" icon="repeat">
        **Açıklama:** Adres yeniden kullanımı\
        **Varsayılan Değer:** true\
        **Önerilen Değer:** Çoklu worker deployment'larında açık bırakın
      </Card>

      <Card title="Disable Hostname Verification" icon="shield-halved">
        **Açıklama:** TLS hostname doğrulaması\
        **Varsayılan Değer:** true\
        **Önerilen Değer:** Production'da false olarak değiştirin
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout ve Connection Pool Parametreleri

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Açıklama:** Bağlantı kurulması için maksimum bekleme süresi\
    **Varsayılan:** 5000\
    **Min:** 1000 | **Max:** 60000\
    **Birim:** milisaniye
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Açıklama:** Elasticsearch yanıtını bekleme süresi\
    **Varsayılan:** 60000\
    **Min:** 1000 | **Max:** 120000\
    **Birim:** milisaniye
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Açıklama:** Connection pool'daki maksimum bağlantı sayısı\
    **Varsayılan:** 256\
    **Min:** 1 | **Max:** 2000\
    **Birim:** adet
  </Card>

  <Card title="Socket Idle Timeout" icon="timer">
    **Açıklama:** Idle bağlantının kapatılma süresi\
    **Varsayılan:** 30000\
    **Min:** 1000 | **Max:** 600000\
    **Birim:** milisaniye
  </Card>
</CardGroup>

## Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="Yüksek Hacimli Log Yazımı" icon="chart-line">
    **Durum:** Dakikada milyonlarca log girişi\
    **Çözüm:** READ\_WRITE, administrate açık, `ioThreads=64`, `maxConnectionTotal=512`\
    **Beklenen Davranış:** ILM otomatik rollover yapar, yazma kuyruğu oluşmaz
  </Card>

  <Card title="Raporlama Kümesi" icon="magnifying-glass">
    **Durum:** Salt okuma sorguları\
    **Çözüm:** READ, administrate kapalı, authentication=true\
    **Beklenen Davranış:** Cluster sadece sorgu alır, yönetim işlemleri engellenir
  </Card>

  <Card title="Çoklu Host Failover" icon="network-wired">
    **Durum:** İki veri merkezi\
    **Çözüm:** İki HTTPS host, encrypt communication + PKCS#12 CA\
    **Beklenen Davranış:** Trafik otomatik olarak sağlıklı host'a yönelir
  </Card>

  <Card title="Şema Güncellemesi" icon="code">
    **Durum:** Yeni alanlar eklendi\
    **Çözüm:** Template adı ve shard/replica güncellenip "Create Index Template" çalıştırılır\
    **Beklenen Davranış:** Yeni indexler güncel şema ile açılır
  </Card>

  <Card title="Veri Saklama Politikası" icon="calendar">
    **Durum:** 90 gün üstü loglar silinecek\
    **Çözüm:** ILM delete fazı aktif, `minAgeOfDelete=90`\
    **Beklenen Davranış:** Eski indexler otomatik temizlenir
  </Card>

  <Card title="Güvenli Tünel" icon="shield">
    **Durum:** TLS zorunlu, internal CA\
    **Çözüm:** Encrypt communication açık, `CA_IN_PEM_FILE` yüklenir\
    **Beklenen Davranış:** Sertifikalarla güvenli bağlantı sağlanır
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni Elasticsearch Connection Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/ElastichSearch-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=a4e84c23f42bf999cf87119d433f26f8" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/ElastichSearch-variable-new.png" />

#### Yapılandırma Adımları

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Sol menüden **Connection → Elasticsearch** bölümüne gidin.
    * Sağ üstteki **\[+ Create]** butonuna tıklayın.
    * Yeni Elasticsearch Connection oluşturma formu açılır.
  </Step>

  <Step title="Temel Bilgileri Girme">
    **Enable Status (Aktif Durumu) Ayarlama:**

    * Formun üst kısmında **Enable Status** toggle'ını bulun.
    * Toggle'ı **Aktif** konumuna getirin (varsayılan olarak aktif gelir).
    * Connection'ı pasif yapmak isterseniz toggle'ı **Pasif** konumuna getirin.
    * Pasif connection'lar Integration Flow'larda kullanılamaz ancak yapılandırmaları saklanır.

    **Name (İsim) - Zorunlu Alan:**

    * **Name** alanına benzersiz bir connection adı girin.
    * İsim örnekleri: `` `Production_ElasticLog` ``, `` `Test_ElasticConnection` ``, `` `Dev_ElasticSearch` ``
    * İsim kuralları:
    * Boşlukla başlamamalı
    * Özel karakterler kullanılmamalı (önerilen: harf, rakam, alt çizgi)
    * Maksimum 255 karakter
    * İsim yazdıkça sistem otomatik kontrol eder:
    * Yeşil tik işareti: İsim kullanılabilir
    * Kırmızı çarpı işareti: İsim zaten mevcut, farklı bir isim seçin

    **Description (Açıklama) - İsteğe Bağlı:**

    * **Description** alanına connection'ın amacını açıklayan bir metin girin.
    * Örnek açıklamalar:
    * "Gateway loglarını production cluster'a yazar"
    * "Production ortamı Elasticsearch bağlantısı"
    * "Test ortamı için dummy Elasticsearch bağlantısı"
    * Maksimum 1000 karakter sınırı vardır.
    * Bu alan boş bırakılabilir.

    <Info>
      Sayfanın üst kısmındaki işlem butonları alanında, **\[\<> Variable]** butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için [Dinamik Değişkenler](/tr/concepts/temel-kavramlar/dinamik-degiskenler) sayfasını inceleyebilirsiniz.
    </Info>
  </Step>

  <Step title="Environment (Ortam) Seçimi">
    * **Environment** dropdown menüsünü bulun.
    * Dropdown menüyü açın ve aşağıdaki seçeneklerden birini seçin:
    * **Development**: Geliştirme ortamı için
    * **Test**: Test ortamı için
    * **Production**: Üretim ortamı için
    * Her ortam için farklı connection parametreleri tanımlanabilir.
    * Ortam seçimi, connection'ın hangi ortamda aktif olacağını belirler.
    * Aynı isimde connection'lar farklı ortamlar için ayrı ayrı oluşturulabilir.
  </Step>

  <Step title="Elasticsearch Host Parametreleri">
    **Scheme Seçimi:**

    * Her host için **Scheme** seçin: **HTTP** veya **HTTPS**
    * HTTPS seçildiğinde **Encrypt Communication** otomatik açılır.

    **Host/Port - Zorunlu:**

    * **Host** alanına Elasticsearch node'unun adresini girin.
    * **Port** alanına port numarasını girin (varsayılan: 9200).
    * Host formatı:
    * FQDN (Fully Qualified Domain Name): `` `es-prod-01.company.com` ``
    * IP adresi: `` `192.168.1.100` ``
    * Birden fazla host ekleyerek cluster erişimini yedekleyin.
    * En az bir host zorunludur.

    **Connection Type Seçimi:**

    * **Connection Type** dropdown menüsünden seçim yapın:
    * **READ\_WRITE**: Okuma ve yazma işlemleri için (administrate işlemleri aktif)
    * **READ**: Sadece okuma işlemleri için (administrate devre dışı)
    * Connection type seçimi, administrate davranışını belirler.

    <Tip>
      Birden fazla host ekleyerek yüksek erişilebilirlik sağlayabilirsiniz.
    </Tip>
  </Step>

  <Step title="Index Template ve ILM Yapılandırması">
    **Index Name - Zorunlu:**

    * **Index Name** alanına logların yazılacağı indeks adını girin.
    * Örnek: `` `apinizer-log-apiproxy-default` ``
    * Administrate açıkken otomatik oluşturulur; çakışmalar kontrol edilir.

    **Administrate Ayarlama:**

    * **Administrate** toggle'ını bulun.
    * Template ve ILM yönetimi için toggle'ı **Aktif** konumuna getirin.
    * Administrate aktifse aşağıdaki alanlar görünür hale gelir:
    * Template adı
    * Shard sayısı
    * Replica sayısı
    * Refresh interval

    **ILM Policy Yapılandırması:**

    * **Edit ILM Policy** butonuna tıklayın.
    * Açılan modalda hot/warm/cold/delete faz eşiklerini ayarlayın.
    * Policy adının benzersiz olduğunu doğrulayın.
    * İlk deployment öncesi policy adını kontrol edin.
  </Step>

  <Step title="Timeout ve Connection Pool Ayarları">
    **Connection Timeout:**

    * **Connection Timeout (ms)** alanına bağlantı kurulumu için bekleme süresini girin.
    * Varsayılan: 5000 milisaniye
    * Minimum: 1000, Maksimum: 60000 milisaniye

    **IO Threads:**

    * **IO Threads** alanına HTTP istemci iş parçacığı sayısını girin.
    * Minimum: 1
    * Yüksek trafik için artırılmalı (örn: 64)

    **Max Connection Per Host:**

    * **Max Connection Per Host** alanına host başına eşzamanlı istek sınırını girin.
    * Minimum: 1
    * Önerilen: 128

    **Max Connection Total:**

    * **Max Connection Total** alanına toplam connection havuzu sınırını girin.
    * Minimum: 1, Maksimum: 2000
    * Önerilen: 256

    **Socket Ayarları:**

    * **Socket Keep Alive** toggle'ını bulun (varsayılan: aktif).
    * **Socket Reuse Address** toggle'ını bulun (varsayılan: aktif).
    * Ağ cihazları idle bağlantıları düşürüyorsa keep-alive açık bırakın.
    * Çoklu worker deployment'larında reuse address açık bırakın.
  </Step>

  <Step title="Güvenlik ve Authentication Ayarları">
    **Authentication Ayarlama:**

    * **Authenticate** toggle'ını bulun.
    * Elasticsearch cluster'ınız kimlik doğrulama gerektiriyorsa toggle'ı **Aktif** konumuna getirin.
    * Çoğu production ortamında kimlik doğrulama gerektirir.

    **Username ve Password:**

    * **Authenticate** toggle'ı aktifse **Elastic Username** alanı görünür hale gelir.
    * Elasticsearch kullanıcı adını girin.
    * **Elastic Password** alanına şifreyi girin.
    * Şifre güvenlik nedeniyle maskelenmiş görünecektir.
    * Hassas bilgiler için secret manager kullanımı önerilir.

    **Encrypt Communication (TLS):**

    * En az bir host HTTPS seçildiğinde **Encrypt Communication** bölümü görünür.
    * TLS tipi seçin:
    * **PKCS#12 CA**: PKCS#12 formatında CA dosyası
    * **PEM CA**: PEM formatında CA dosyası
    * **PKCS#12 cert+key**: PKCS#12 formatında sertifika ve anahtar dosyası
    * Gerekli dosyaları yükleyin.
    * Eksik dosyalarda form hata verir ve kayda izin vermez.

    **Disable Hostname Verification:**

    * **Disable Hostname Verification** toggle'ını bulun.
    * Production'da false olarak değiştirin (varsayılan: true).
    * Test ortamında true bırakılabilir.

    <Warning>
      Production ortamında mutlaka SSL/TLS kullanın ve hostname verification'ı aktif tutun.
    </Warning>
  </Step>

  <Step title="Test Connection (Bağlantı Testi)">
    * Formun alt kısmında veya sağ üst köşede **\[Test Connection]** butonunu bulun.
    * Butona tıklayın.
    * Sistem bağlantı parametrelerini test eder:
    * Elasticsearch cluster'ına bağlantı kurulur
    * Kimlik doğrulama yapılır (Authentication aktifse)
    * TLS handshake yapılır (Encrypt Communication aktifse)
    * Cluster sağlığı kontrol edilir
    * Test sonucu:
    * **Başarılı**: Yeşil onay mesajı görüntülenir, "Connection test successful" gibi bir mesaj
    * **Başarısız**: Kırmızı hata mesajı görüntülenir, hata detayları gösterilir
    * Hata durumunda:
    * Hata mesajını okuyun
    * İlgili parametreleri kontrol edin (Host, Port, Username, Password)
    * Firewall ve network ayarlarını kontrol edin
    * Elasticsearch cluster sağlığını kontrol edin
    * Test başarılı olana kadar parametreleri düzeltin ve tekrar test edin.
  </Step>

  <Step title="Kaydetme ve Deploy Etme">
    * Tüm zorunlu alanların doldurulduğundan emin olun.
    * Test connection'ın başarılı olduğunu doğrulayın (önerilir).
    * Formun sağ üst köşesinde bulunan **\[Save and Deploy]** butonuna tıklayın.
    * Sistem connection'ı kaydeder ve seçilen ortama deploy eder.
    * Başarılı kayıt sonrası:
    * Connection listesi sayfasına yönlendirilirsiniz
    * Yeni connection listede görünür
    * Connection **Enabled** durumda olur
    * Integration Flow ve Connector adımlarında kullanılabilir hale gelir

    **Kontrol Listesi (Kaydetmeden Önce):**

    * Name alanı benzersiz ve geçerli
    * En az bir Host ve Port alanları doldurulmuş
    * Index Name doldurulmuş
    * Connection Type seçilmiş
    * Authentication aktifse Username ve Password doldurulmuş
    * Environment seçilmiş
    * Test Connection başarılı (önerilir)
    * Zorunlu alanların hepsi doldurulmuş

    **Sonuç:**

    * Connection başarıyla oluşturulur ve kaydedilir
    * Seçilen ortamda aktif hale gelir
    * Integration Flow ve Connector adımlarında connection seçimi yapılabilir
    * Connection listesinde görüntülenir ve yönetilebilir

    <Check>
      Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
    </Check>
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: Liste Ekranından" icon="list">
    * Connection listesinde satır sonundaki **⋮** menüsünden **Delete** seçeneğini tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Silme İpuçları" icon="info-circle">
    **Silmeden Önce Kontrol Edin:**

    * Integration Flow veya Connector adımlarında kullanılıyor olabilir.
    * Gerekirse alternatif bir connection atayın.
    * Silmeden önce Export ile yedek alın.
  </Card>

  <Card title="Alternatif: Deaktif Etme" icon="toggle-off">
    * Silmek yerine view ekranından **\[Disabled]** butonunu kullanın.
    * Connection pasif olur ancak silinmez.
    * Gerektiğinde **\[Enabled]** butonu ile yeniden etkinleştirilebilir.
  </Card>
</CardGroup>

### Connection'ı Dışa/İçe Aktarma

<Info>
  Bu adımda kullanıcı, mevcut connection'ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection'ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
</Info>

<AccordionGroup>
  <Accordion title="Dışa Aktarma (Export)">
    <CardGroup cols={2}>
      <Card title="Yöntem 1: Liste Ekranından" icon="list">
        * Connection listesinde satır sonundaki **⋮** menüsünden **Export** seçeneğini tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Dosya Formatı" icon="file-zipper">
        Format: `{Date}-elasticsearch-integration-{ConnectionName}-export.zip`\
        Örnek: `13 Nov 2025-elasticsearch-integration-Production_ElasticLog-export.zip`
      </Card>

      <Card title="ZIP İçeriği" icon="folder-open">
        * Connection JSON dosyası
        * Metadata bilgileri
        * Bağımlılık bilgileri (örneğin sertifikalar, key store)
      </Card>

      <Card title="Kullanım Alanları" icon="list-check">
        * Yedekleme
        * Ortamlar arası taşıma (Test → Prod)
        * Versiyonlama
        * Ekip veya proje bazlı paylaşım
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İçe Aktarma (Import)">
    <CardGroup cols={2}>
      <Card title="İçe Aktarma Adımları" icon="upload">
        * Ana listede **\[Import Elasticsearch]** butonuna tıklayın.
        * İndirilen ZIP dosyasını seçin.
        * Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
        * Ardından **\[Import]** butonuna tıklayın.
      </Card>

      <Card title="İçe Aktarma Senaryoları" icon="info-circle">
        **Senaryo 1: İsim Çakışması** → Eski connection'ın üzerine yazın veya yeni bir isimle oluşturun.

        **Senaryo 2: Eksik Bağımlılıklar** → Eksik sertifikaları veya key store'ları önce oluşturun veya import sırasında çıkarın.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Connection'ın Kullanım Alanları

<CardGroup cols={2}>
  <Card title="Connection Oluşturma ve Aktif Etme" icon="plus-circle">
    **Adımlar:**

    1. Connection'ı oluşturun.
    2. Test Connection ile bağlantıyı doğrulayın.
    3. Save and Deploy ile kaydedin ve etkinleştirin.
    4. Connection'ın Enabled durumda olduğundan emin olun.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="plug">
    Elasticsearch log, metrik ve arama verilerini gerektiren adımlarda connection seçilir. Örnek: "Elasticsearch Index", "Elasticsearch Query", "Elasticsearch Bulk" gibi adımlar. Bağlantı seçimi bu adımların yapılandırmasında yer alan Connection alanından yapılır.
  </Card>

  <Card title="Scheduled Job Kullanımı" icon="clock">
    Zamanlanmış görevlerde (ör. belirli aralıklarla log yazma, index yönetimi vb.) bağlantı seçilerek Elasticsearch cluster'ına erişim sağlanır. Connection değiştiğinde, job çalışma davranışı da buna göre güncellenir.
  </Card>

  <Card title="Test Amaçlı Kullanım" icon="flask">
    Connection Test özelliği ile bağlantının doğruluğu Integration Flow'dan bağımsız olarak kontrol edilebilir. Bu test hata ayıklama sürecinde kritik önem taşır.
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Yapılması Gerekenler ve En İyi Uygulamalar">
    <CardGroup cols={2}>
      <Card title="Index İsimlendirme" icon="tag">
        **Kötü:** `index1`.\
        **İyi:** `log-prod`.\
        **En İyi:** `` `prod-apiproxy-log-{yyyy.MM.dd}` ``
      </Card>

      <Card title="ILM Politikaları" icon="calendar">
        **Kötü:** Varsayılanları değiştirmemek.\
        **İyi:** Günlük veri büyüklüğüne göre max size ayarlamak.\
        **En İyi:** Hem boyut hem yaş eşiği ayarlayıp rollover butonunu düzenli kullanmak
      </Card>

      <Card title="TLS Sertifika Yönetimi" icon="shield">
        **Kötü:** Tüm ortamda aynı sertifikayı paylaşmak.\
        **İyi:** Ortam bazlı sertifika yüklemek.\
        **En İyi:** Sertifika rotasyonunu otomasyonla planlamak ve expiration alarmları kurmak
      </Card>

      <Card title="Connection Türü Seçimi" icon="toggle-on">
        **Kötü:** Okuma-only cluster'a `READ_WRITE` vermek.\
        **İyi:** Yetki gereksinimine göre seçim yapmak.\
        **En İyi:** Cluster rolü değişirse connection tipini güncellemek
      </Card>

      <Card title="Ortam Yönetimi" icon="server">
        **Kötü:** Tüm ortamlarda aynı connection parametrelerini kullanmak.\
        **İyi:** Her ortam için ayrı connection oluşturmak.\
        **En İyi:** Environment seçeneğini kullanarak tek connection'da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek
      </Card>

      <Card title="Connection Test" icon="flask">
        **Kötü:** Connection'ı test etmeden kaydetmek ve deploy etmek.\
        **İyi:** Kaydetmeden önce Test Connection ile doğrulamak.\
        **En İyi:** Her parametre değişikliğinden sonra test etmek, production'a geçmeden önce test ortamında tam entegrasyon testi yapmak
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Güvenlik En İyi Uygulamaları">
    <CardGroup cols={2}>
      <Card title="Erişim Segmentasyonu" icon="network-wired">
        Production cluster için ayrı connection ve RBAC kullanıcıları oluşturun; erişim tokenlarını paylaşmayın
      </Card>

      <Card title="Dosya Yükleri" icon="file-upload">
        PKCS#12/PEM dosyalarını versiyon kontrolüne koymayın; secret storage üzerinden yükleyin
      </Card>

      <Card title="Hostname Doğrulama" icon="shield-halved">
        Disable Hostname Verification yalnızca test için kullanılmalı; production'da false bırakılması önerilir
      </Card>

      <Card title="Kimlik Bilgileri Yönetimi" icon="lock">
        Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin
      </Card>

      <Card title="SSL/TLS Kullanımı" icon="shield">
        Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin
      </Card>

      <Card title="Erişim Kontrolü" icon="user-shield">
        Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection'lar için değişiklik approval süreci uygulayın
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kaçınılması Gerekenler">
    <CardGroup cols={2}>
      <Card title="İndex Adı Yeniden Kullanımı" icon="exclamation-triangle">
        **Neden kaçınılmalı:** Aynı template'i paylaşan indekslerde çakışma yaratır.\
        **Alternatif:** Proje bazlı prefix kullanın
      </Card>

      <Card title="Eksik Host Tanımı" icon="network-wired">
        **Neden kaçınılmalı:** Tek host arızasında tüm akış durur.\
        **Alternatif:** En az iki host girin, health check izleyin
      </Card>

      <Card title="İzin Verilmeyen TLS Tipleri" icon="shield-slash">
        **Neden kaçınılmalı:** Yanlış dosya tipi handshake başarısızlığına yol açar.\
        **Alternatif:** HTTPS seçimine uygun sertifika paketini kullanın
      </Card>

      <Card title="Production Connection'ı Test Ortamında Kullanma" icon="triangle-exclamation">
        **Neden kaçınılmalı:** Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur.\
        **Alternatif:** Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test\_, Prod\_)
      </Card>

      <Card title="Çok Düşük Timeout Değerleri" icon="clock">
        **Neden kaçınılmalı:** Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları başarısız olur.\
        **Alternatif:** Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency'yi ölçün ve timeout'ları buna göre belirleyin
      </Card>

      <Card title="Connection Pool Kullanmama" icon="layer-group">
        **Neden kaçınılmalı:** Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar.\
        **Alternatif:** Connection pool aktif edin, pool size'ı trafik hacmine göre ayarlayın, pool monitoring kurun
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performans İpuçları">
    <CardGroup cols={2}>
      <Card title="Shard/Replica Planlaması" icon="chart-bar">
        **Öneri:** Günlük kayıt hacmine göre shard sayısını belirleyin, replica sayısını cluster kapasitesine göre ayarlayın.\
        **Etki:** Arama performansı artar, disk kullanımı dengelenir
      </Card>

      <Card title="ILM Faz Süreleri" icon="calendar">
        **Öneri:** Hot fazı kısa, cold fazı uzun tutarak depolama maliyetini azaltın.\
        **Etki:** Pahalı düğümlerde gereksiz veri tutulmaz
      </Card>

      <Card title="Thread Pool İzleme" icon="chart-line">
        **Öneri:** Monitor ekranından bulk/search queue uzunluklarını takip edin; eşikler aşarsa ioThreads/pool değerlerini yükseltin.\
        **Etki:** Kuyrukta bekleyen istek sayısı azalır
      </Card>

      <Card title="Connection Pool Optimizasyonu" icon="layer-group">
        **Öneri:** Pool size'ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout'ları belirleyin, pool health check yapın.\
        **Etki:** Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir
      </Card>

      <Card title="Timeout Değerleri Optimizasyonu" icon="clock">
        **Öneri:** Gerçek network latency'yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout'lardan kaçının.\
        **Etki:** Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir
      </Card>

      <Card title="Connection Monitoring" icon="chart-bar">
        **Öneri:** Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun.\
        **Etki:** Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Sorun Giderme (Troubleshooting)

<AccordionGroup>
  <Accordion title="Index Template Oluşmuyor">
    <Warning>
      Administrate kapalı, Template adı çakışıyor veya Elasticsearch kullanıcı yetkisi yetersiz olabilir.
    </Warning>

    <Steps>
      <Step title="Administrate Etkinleştirme">
        Administrate'i etkinleştirin.
      </Step>

      <Step title="Template Adı">
        Template adını değiştirin.
      </Step>

      <Step title="Kullanıcı Yetkisi">
        Kullanıcıya `manage_index_templates` yetkisi verin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="ILM Policy Kaydedilmiyor">
    <Warning>
      Policy adı mevcut, Hot phase devre dışı veya UI modalı kapatılmamış olabilir.
    </Warning>

    <Steps>
      <Step title="Policy Adı">
        Policy adını benzersiz yapın.
      </Step>

      <Step title="Hot Fazı">
        Hot fazı etkinleştirin.
      </Step>

      <Step title="Modal Kaydetme">
        Modalda Save'e basıp tekrar deneyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
    </Warning>

    <Steps>
      <Step title="Network Kontrolü">
        Network connectivity kontrol edin.
      </Step>

      <Step title="Sistem Sağlığı">
        Hedef sistem sağlığını kontrol edin.
      </Step>

      <Step title="Timeout Ayarları">
        Timeout değerlerini artırın.
      </Step>

      <Step title="Log İnceleme">
        Connection loglarını inceleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
    </Warning>

    <Steps>
      <Step title="Kimlik Bilgileri">
        Kimlik bilgilerini doğrulayın.
      </Step>

      <Step title="Kullanıcı Durumu">
        Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Yetki Kontrolü">
        Gerekli yetkilerin verildiğini kontrol edin.
      </Step>

      <Step title="Sertifika Kontrolü">
        SSL/TLS sertifikalarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Pool size'ı artırın.
      </Step>

      <Step title="Connection Kontrolü">
        Connection'ların düzgün kapatıldığını kontrol edin.
      </Step>

      <Step title="Idle Timeout">
        Idle connection timeout'ları ayarlayın.
      </Step>

      <Step title="Metrik İzleme">
        Connection kullanım metriklerini izleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor">
    <Warning>
      Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Connection Seçimi">
        Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
      </Step>

      <Step title="Connection Deploy">
        Connection'ı tekrar deploy edin.
      </Step>

      <Step title="Flow/Job Deploy">
        Integration Flow veya Job'ı redeploy edin.
      </Step>

      <Step title="Log Kontrolü">
        Gateway loglarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Sık Sorulan Sorular (SSS)

<AccordionGroup>
  <Accordion title="İki farklı ortam için tek connection kullanabilir miyim?">
    <Check>
      Ortam dropdown'ı sayesinde aynı connection içinde Development/Test/Production değerleri tutulabilir; ancak erişim politikaları için ayrı connection oluşturmak daha güvenlidir.
    </Check>
  </Accordion>

  <Accordion title="Rollover butonu ne yapar?">
    <Info>
      Belirtilen connection'ın aktif indeksini manuel olarak rollover eder; ILM eşiği dolmadan önce acil durumlarda kullanılabilir.
    </Info>
  </Accordion>

  <Accordion title="HTTPS host olmadan Encrypt Communication açılabilir mi?">
    <Warning>
      Hayır, en az bir host HTTPS seçilmedikçe TLS alanları görünmez; güvenlik gereksinimi için host scheme'i güncelleyin.
    </Warning>
  </Accordion>

  <Accordion title="ILM politikası tüm indekslere uygulanır mı?">
    <Info>
      Aynı template ve policy adıyla oluşturulan indeksler etkilenir; farklı adlar kullanırsanız manuel atama gerekir.
    </Info>
  </Accordion>

  <Accordion title="Monitor ekranındaki thread pool verileri neyi gösterir?">
    <Info>
      Elasticsearch node'larının bulk/search/ingest queue uzunluklarını, rejection sayılarını ve aktif thread sayısını gösterir; performans tuning için kullanılır.
    </Info>
  </Accordion>

  <Accordion title="Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?">
    <Check>
      Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection'da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır.
    </Check>
  </Accordion>

  <Accordion title="Connection pool kullanmak zorunlu mudur?">
    <Info>
      Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır.
    </Info>
  </Accordion>

  <Accordion title="Test ve Production için farklı connection'lar mı oluşturmalıyım?">
    <Check>
      Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar.
    </Check>
  </Accordion>

  <Accordion title="Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?">
    <Warning>
      Birkaç neden olabilir:
    </Warning>

    1. Connection enable toggle'ı pasif olabilir
    2. Integration adımında farklı bir connection seçili olabilir
    3. Connection deploy edilmemiş olabilir
    4. Integration Flow henüz redeploy edilmemiş olabilir
  </Accordion>
</AccordionGroup>
