Elasticsearch nedir?
Elasticsearch, JSON belgelerini indeksleyip bunlar üzerinde hızlı tam metin araması ve analiz yapan dağıtık bir arama ve analiz motorudur. Uygulama içi arama, günlük (log) toplama ve izleme gibi alanlarda yaygın kullanılır. Veriyi birden çok düğüme bölerek yatay ölçeklenebilir.
Bir ilişkisel veritabanının yerine geçmesi için değil, arama ve toplulaştırma ihtiyaçlarını karşılamak için tasarlanmıştır. Çoğu yapıda asıl veri başka bir veritabanında durur, Elasticsearch ise aranabilir bir kopyasını tutar.
Nasıl çalışır?
Veriler indeks adı verilen yapılarda saklanır; her indeks parçalara (shard) bölünür ve bu parçalar kopyalarla birlikte kümedeki düğümlere dağıtılır. Metin, çözümleyiciler (analyzer) ile terimlere ayrılır ve ters indekse yazılır; arama sorguları bu yapı üzerinden çok hızlı çalışır.
İstemciler REST API üzerinden JSON ile konuşur. Küme sağlığı yeşil, sarı ya da kırmızı olarak raporlanır; kopya parçaların atanmamış olması genellikle sarı duruma yol açar.
Sunucu ve hosting ortamında
Sunucularda Elasticsearch genellikle ELK ya da benzeri bir günlük yığınının parçası olarak çalışır. Java sanal makinesi kullandığı için bellek ayarı (heap boyutu) ve disk performansı kritiktir. Varsayılan olarak 9200 (HTTP) ve 9300 (düğümler arası) portlarını kullanır.
Geçmişte kimlik doğrulamasız ve internete açık Elasticsearch örnekleri nedeniyle çok sayıda veri sızıntısı yaşanmıştır. Bu yüzden erişim güvenliği kurulumun ilk adımı olmalıdır.
Nasıl korunulur?
- 9200 ve 9300 portlarını internete açmayın; yalnızca gerekli sunuculara güvenlik duvarıyla izin verin.
- Güvenlik özelliklerini (kimlik doğrulama, rol tabanlı erişim, TLS) etkinleştirin ve varsayılan parolaları değiştirin.
- Uygulamalar için en az yetkiyle ayrı kullanıcılar ve API anahtarları tanımlayın.
- Heap boyutunu sunucu belleğinin yaklaşık yarısıyla sınırlı tutun ve diski yeterli boş alanla izleyin.
- Anlık görüntü (snapshot) yedekleri alın ve geri yüklemeyi deneyin; sürümleri güvenlik bültenlerine göre güncelleyin.
Sık yapılan hatalar
- Küçük bir kurulumu güvenlik ayarı olmadan bırakıp portu herkese açmak.
- Elasticsearch'ü tek gerçek veri kaynağı gibi kullanıp yedek almamak.
- Çok sayıda küçük parça oluşturarak kümeyi gereksiz yormak.
- Disk doluluğu eşiklerini izlememek; indeksler salt okunur kalabilir.
Sık sorulan sorular
Elasticsearch ne işe yarar?
Büyük miktardaki metin ve günlük verisinde hızlı arama, filtreleme ve istatistik çıkarmak için kullanılır. Site içi arama ve log analizi en yaygın örneklerdir.
Elasticsearch bir veritabanı mıdır?
Belge deposu olarak çalışır ancak ilişkisel veritabanının işlem garantilerini sunmaz. Kritik veri için ayrı bir veritabanı ve yedek önerilir.
Tek düğümle çalıştırmak sorun olur mu?
Test ve küçük kurulumlarda mümkündür, fakat düğüm arızasında veri ve hizmet kaybı riski vardır. Üretimde birden fazla düğüm ve kopya parça tercih edilir.
İlgili terimler
- EximcPanel’in de kullandığı, yaygın bir e-posta sunucusu (MTA).
- HAProxyHAProxy, TCP ve HTTP trafiğini birden çok sunucuya dağıtan, yüksek performanslı açık kaynaklı bir yük dengeleyici ve ters vekildir.
- MariaDB / MySQLWeb uygulamalarında en yaygın kullanılan ilişkisel veritabanı sunucuları.
- MemcachedMemcached, sık okunan verileri bellekte tutarak veritabanı yükünü azaltan, basit ve hızlı bir dağıtık önbellek sistemidir.
- nginxWeb sunucusu, ters vekil ve yük dengeleyici olarak yaygın kullanılan yazılım.
- Node.jsNode.js, JavaScript kodunu tarayıcı dışında, sunucu tarafında çalıştıran olay tabanlı ve açık kaynaklı bir çalışma ortamıdır.