Buyukweb
Elasticsearch Kurulumu ve Temel Arama Operasyonları

Elasticsearch Kurulumu ve Temel Arama Operasyonları

Elasticsearch kurulumu, index yönetimi, belge CRUD operasyonları ve temel arama sorguları. Full-text search, filtreleme ve aggregation kullanımı.

Büyükweb Teknik Ekibi26 Eylül 20247 dakika okuma

Elasticsearch Kurulumu ve Temel Arama Operasyonları

Elasticsearch, dağıtık, RESTful arama ve analitik motorudur. Apache Lucene üzerine inşa edilmiştir. Log analizi, full-text arama ve gerçek zamanlı analitik için kullanılır.

Elasticsearch Ne İçin Kullanılır?

  • Full-text search: Web sitesi veya uygulama arama
  • Log analizi: ELK Stack (Elasticsearch + Logstash + Kibana)
  • Metrics: Sunucu ve uygulama metrikleri
  • E-ticaret arama: Ürün arama ve filtreleme
  • APM: Uygulama performans izleme

Kurulum (Ubuntu/Debian)

# GPG anahtarı ve repo ekle
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list

apt update
apt install elasticsearch

# Başlat
systemctl enable --now elasticsearch

# Durum
curl -X GET "localhost:9200/"

Temel Yapılandırma

# /etc/elasticsearch/elasticsearch.yml
cluster.name: my-cluster
node.name: node-1

# Veri ve log dizinleri
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

# Ağ ayarları (sadece lokal için)
network.host: 127.0.0.1
http.port: 9200

# JVM heap (RAM'in ~%50'si, max 32GB)
# -Xms2g -Xmx2g  → /etc/elasticsearch/jvm.options

REST API ile Temel Operasyonlar

Elasticsearch HTTP REST API kullanır:

# Cluster bilgisi
curl -X GET "localhost:9200/"
curl -X GET "localhost:9200/_cluster/health?pretty"

# Index listesi
curl -X GET "localhost:9200/_cat/indices?v"

# Node bilgisi
curl -X GET "localhost:9200/_cat/nodes?v"

Index Yönetimi

# Index oluştur
curl -X PUT "localhost:9200/urunler" -H "Content-Type: application/json" -d '{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 0
    },
    "mappings": {
        "properties": {
            "isim": { "type": "text", "analyzer": "turkish" },
            "fiyat": { "type": "double" },
            "kategori": { "type": "keyword" },
            "stok": { "type": "integer" },
            "olusturulma": { "type": "date" }
        }
    }
}'

# Index sil
curl -X DELETE "localhost:9200/urunler"

# Index ayarları güncelle
curl -X PUT "localhost:9200/urunler/_settings" -H "Content-Type: application/json" -d '{
    "number_of_replicas": 1
}'

Belge CRUD

Create (Ekle):

# Belge ekle (ID otomatik)
curl -X POST "localhost:9200/urunler/_doc" -H "Content-Type: application/json" -d '{
    "isim": "Laptop Dell XPS",
    "fiyat": 25000,
    "kategori": "elektronik",
    "stok": 50,
    "ozellikler": ["16GB RAM", "SSD 512GB", "i7"]
}'

# Belge ekle (belirli ID)
curl -X PUT "localhost:9200/urunler/_doc/1" -H "Content-Type: application/json" -d '{
    "isim": "Wireless Mouse",
    "fiyat": 350,
    "kategori": "elektronik"
}'

Read (Oku):

# Belge getir
curl -X GET "localhost:9200/urunler/_doc/1"

# Birden fazla belge
curl -X GET "localhost:9200/urunler/_mget" -H "Content-Type: application/json" -d '{
    "ids": ["1", "2", "3"]
}'

Update (Güncelle):

curl -X POST "localhost:9200/urunler/_update/1" -H "Content-Type: application/json" -d '{
    "doc": { "fiyat": 380 }
}'

Delete (Sil):

curl -X DELETE "localhost:9200/urunler/_doc/1"

Arama Sorguları

Basit Arama:

# Tüm belgeleri al
curl -X GET "localhost:9200/urunler/_search?pretty"

# Full-text arama
curl -X GET "localhost:9200/urunler/_search?pretty" -H "Content-Type: application/json" -d '{
    "query": {
        "match": { "isim": "laptop dell" }
    }
}'

Filtreleme:

curl -X GET "localhost:9200/urunler/_search?pretty" -H "Content-Type: application/json" -d '{
    "query": {
        "bool": {
            "must": [
                { "match": { "kategori": "elektronik" } }
            ],
            "filter": [
                { "range": { "fiyat": { "gte": 100, "lte": 5000 } } },
                { "term": { "stok": { "gt": 0 } } }
            ]
        }
    },
    "sort": [{ "fiyat": "asc" }],
    "_source": ["isim", "fiyat", "kategori"],
    "from": 0,
    "size": 10
}'

Multi-match (Birden fazla alanda):

curl -X GET "localhost:9200/urunler/_search?pretty" -H "Content-Type: application/json" -d '{
    "query": {
        "multi_match": {
            "query": "dell laptop",
            "fields": ["isim^2", "aciklama"]
        }
    }
}'

Aggregation (Gruplama/İstatistik)

curl -X GET "localhost:9200/urunler/_search?pretty" -H "Content-Type: application/json" -d '{
    "size": 0,
    "aggs": {
        "kategoriye_gore": {
            "terms": { "field": "kategori" }
        },
        "fiyat_istatistik": {
            "stats": { "field": "fiyat" }
        },
        "fiyat_aralik": {
            "range": {
                "field": "fiyat",
                "ranges": [
                    { "to": 1000 },
                    { "from": 1000, "to": 5000 },
                    { "from": 5000 }
                ]
            }
        }
    }
}'

Türkçe Analiz

# Türkçe analyzer ile index
curl -X PUT "localhost:9200/turkce_icerik" -H "Content-Type: application/json" -d '{
    "settings": {
        "analysis": {
            "analyzer": {
                "turkish_analyzer": {
                    "type": "custom",
                    "tokenizer": "standard",
                    "filter": ["lowercase", "turkish_stop", "snowball"]
                }
            }
        }
    }
}'

Kibana Kurulumu

apt install kibana
systemctl enable --now kibana

# Tarayıcıdan: http://localhost:5601

Büyükweb VDS sunucularında ELK Stack kurarak log analizi ve full-text arama altyapısı oluşturabilirsiniz.


Veritabani Performans Optimizasyonu

Veritabani web uygulamalarinin kalbidir.

MySQL/MariaDB Tuning

innodb_buffer_pool_size'i RAM'in %60-70'ine ayarlayin. slow_query_log ile yavas sorgulari tespit edin. max_connections optimize edin.

Indeksleme

WHERE, JOIN, ORDER BY sutunlarina indeks ekleyin. EXPLAIN ile sorgu planlari analiz edin. Composite index kullanin.

Baglanti Havuzu

ProxySQL ile gelismis baglanti yonetimi. Connection pooling ile maliyet azaltma. Persistent connections kullanin.

Replikasyon

Master-Slave ile okuma yukunu dagitin. Galera Cluster ile multi-master yuksek erisilebilirlik. Semi-senkron replikasyon degerlendirin.

Yedekleme

mysqldump mantiksal, xtrabackup fiziksel yedek. Binary log ile point-in-time recovery. Incremental yedekleme ile tasarruf.

Sik Sorulan Sorular

MySQL mi PostgreSQL mi?

MySQL cogu web uygulamasi ile uyumlu. PostgreSQL gelismis veri tipleri ve JSON icin ideal. CMS'ler genelde MySQL kullanir.

Veritabanim buyudu ne yapmaliyim?

Gereksiz verileri temizleyin, tablo optimize edin, arsivleme yapin, partitioning kullanin.

Ne siklikla yedek almaliyim?

Kritik veritabanlari saatlik, standart siteler gunluk. Buyuk degisikliklerden once manuel yedek.

Sonuc

Veritabani optimizasyonu uygulama performansini dogrudan etkiler. Indeksleme, tuning ve yedekleme ile veri katmaninizi guclendirin.

Veritabani Boyut Yonetimi

Buyuk Tablolar icin Stratejiler

  • Partitioning: Tarihe gore tablolari bolumlendirin. Sorgu performansi artar.
  • Arsivleme: Eski verileri arsiv tablolarina tasiyin.
  • Sikistirma: InnoDB sikistirmasi ile disk kullanimini %50-75 azaltin.

WordPress Veritabani Optimizasyonu

  • wp_options autoload: Gereksiz autoload kayitlari temizleyin.
  • Post revisions: wp-config.php'de WP_POST_REVISIONS sinirlayin.
  • Transient veriler: Suresi dolmus verileri duzenli temizleyin.
  • Spam yorumlar: Toplu silin.

Veritabani Guvenlik

  • Varsayilan portu degistirin
  • Uygulama bazli kullanici olusturun
  • Minimum gerekli yetki verin
  • SSL ile baglanti sifreleyin
  • Duzenli guvenlik taramasi yapin

Profesyonel Hosting icin Onemli Kriterler

Veri Merkezi Kalitesi

Veri merkezinin tier seviyesi, sunucu barindirma kalitesini dogrudan etkiler. Tier 3 veri merkezleri yedekli guc, soğutma ve ag altyapisi ile %99.982 uptime garantisi sunar. Buyukweb'in Bursa Pendc Tier 3 veri merkezi bu standartlari karsilamaktadir.

Teknik Destek Kalitesi

7/24 ulasılabilir, Turkce ve teknik bilgi sahibi destek ekibi hosting hizmetinin vazgecilmez parcasidir. E-posta, canli destek ve telefon kanallarindan hizli yanit almak ozellikle is surekliligi acisından kritiktir.

Olceklenebilirlik

Isletmeniz buyudukce hosting ihtiyaclariniz da degisir. Paylasimli hostingten VDS'e, VDS'den dedicated sunucuya sorunsuz gecis yapabilmek uzun vadeli planlamaniz icin onemlidir. Buyukweb tum bu gecis sureclerini ucretsiz olarak yonetir.

Yedekleme ve Felaket Kurtarma

Gunluk otomatik yedekleme, tek tikla geri yukleme ve uzak yedekleme secenekleri veri guvenliginiz icin sart. JetBackup ile profesyonel yedekleme cozumu tum Buyukweb hosting paketlerinde standarttir.

Guvenlik Katmanlari

SSL sertifikasi, WAF korumasi, malware tarama, DDoS korumasi ve guvenlik duvari - tum bu katmanlar birlikte calisiarak web sitenizi korur. Buyukweb bu guvenliklerin hepsini standart olarak sunar.

Uygulama ve Proje Ornekleri

Hosting ve sunucu hizmetleri farkli sektorlerde farkli ihtiyaclara karsilik gelir:

Kurumsal Web Sitesi

Sirket tanitim sitesi, blog, kariyer sayfasi ve iletisim formu icin paylasimli hosting yeterlidir. SSL, e-posta ve yedekleme dahil. cPanel ile kolay yonetim.

E-Ticaret Magaza

WooCommerce veya PrestaShop ile online magaza kurmak icin VDS oneriyoruz. Urun gorselleri, siparis yonetimi ve odeme entegrasyonu icin daha fazla kaynak gerekir.

SaaS Uygulamasi

Kendi yaziliminizi barindirmak icin dedicated sunucu veya VDS idealdir. Tam root erisim, ozel yapilandirma ve yuksek performans gerektirir.

Oyun Sunucusu

Multiplayer oyunlar icin dusuk gecikme suresi ve yuksek CPU performansi sart. GPU VDS ile grafik islem gerektiren oyun sunuculari calistirabilirsiniz.

Gelistirme Ortami

Test, staging ve CI/CD icin uygun fiyatli VDS paketleri kullanin. Docker ile gelistirme ortamlarinizi standartlastirin.

Her senaryo icin en uygun cozumu belirlemek icin Buyukweb teknik ekibine danisin: 0850 302 60 70.

Etiketler:

#elasticsearch#kurulum rehberi#veritabanı#database#veri yönetimi

Bu yazıyı paylaş