
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ı.
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:

