Elasticsearch vs RDBMS, Logstash vs Fluentd, Elasticsearch vs Opensearch
Source: Dev.to
Elasticsearch vs RDBMS
Elasticsearch, büyük veri içinde özellikle metin tabanlı arama (full‑text search) yapmak için kullanılan, açık kaynaklı ve dağıtık mimariye sahip bir arama motorudur. Temel amacı, çok büyük veri kümeleri içinde belirli kelime veya bilgileri çok hızlı bulabilmektir.

Klasik bir veritabanında veri doğrudan satırlar üzerinden taranırken, Elasticsearch verileri index üzerinden arar. Bu yaklaşım sayesinde milyarlarca kayıt içinde arama işlemleri neredeyse gerçek zamanlı olarak gerçekleştirilebilir.
Elasticsearch indeksleri, ilişkisel veritabanlarında (RDBMS) bulunan indekslerle aynı değildir. Bir Elasticsearch cluster’ı, içinde birçok indeks barındırabilen bir veritabanı gibidir. Her indeks bir tabloya benzer ve her indeksin içinde birçok doküman bulunur.
RDBMS => Databases => Tables => Columns/Rows
Elasticsearch => Clusters => Indices => Shards => Documents (key‑value pairs)
Elasticsearch temelde Apache Lucene üzerine kuruludur. Lucene, metinlerin indekslenmesi ve aranması için kullanılan güçlü bir kütüphanedir. Elasticsearch ise bu altyapıyı kullanarak hem structured hem de unstructured verilerin indekslenmesini ve aranmasını sağlar. Elasticsearch’te tutulan her veri JSON formatında bir document olarak saklanır ve hepsinin bir _id’si vardır.
Bir veri Elasticsearch’e eklendiğinde sistem bu veriyi doğrudan taranabilir halde saklamaz. Bunun yerine belirlenen alanlar indekslenir. İndeksleme sırasında her kelimenin hangi dokümanlarda geçtiği bir liste halinde tutulur; buna inverted index denir. Bu yapı Elasticsearch’ün çok hızlı çalışmasının temel sebebidir.

Elasticsearch’ün dağıtık çalışmasını sağlayan önemli yapılardan biri shard ve replica kavramlarıdır. Büyük veri kümelerini tek bir sunucuda tutmak zor olabileceği için bir index birden fazla shard’a bölünür. Shard’lar farklı node’lara dağıtılarak paralel işlem yapılması sağlanır. Böylece hem performans artar hem de sistem yatay olarak ölçeklenebilir.

Logstash vs Fluentd
- Logstash: Çalışabilmesi için JVM gereklidir; bu bağımlılık yüksek bellek tüketiminin temel nedeni haline gelmiştir. Logstash daha ağırdır ama güçlü transform yapar.
- Fluentd: Daha hafif ve yüksek ölçekli log toplama için tercih edilir.

Ayrıca Fluent Bit yalnızca log değil, aynı zamanda metrik verilerini de toplayabilir.
- Fluentd + Elasticsearch: Genelde DaemonSet olarak çalışan bir log collector modeliyle kullanılır; logları pod dosyalarından okuyup Kubernetes metadata ekleyerek doğrudan Elasticsearch’e yollar.
- Logstash + Elasticsearch: Logstash da Kubernetes’te çalıştırılabilir, ancak JVM tabanlı olduğu için kaynak ayarı ve operasyonu daha ağırdır.
Benchmark Sonuçları

- Düşük hacimli veri akışlarında Logstash ve Fluentd sistem üzerinde benzer bir yük oluşturur.
- 16 thread / iş yükü düğümü (workload node) noktasına gelindiğinde Logstash, aynı miktarda olayı işleyebilmek için daha fazla CPU kullanır; ortalama %25 daha yüksek CPU tüketimi görülür.
- Performans senaryoya bağlı olsa da Logstash, Fluentd’ye kıyasla daha fazla bellek tüketir. Fluentd verimli bir log toplayıcıdır ve ölçeklenebilirliği oldukça iyidir.
Docker Desteği
- Fluentd: Docker için yerleşik bir logging driver’ı vardır. Container üzerindeki logları ekstra bir agent çalıştırmaya gerek kalmadan doğrudan STDOUT üzerinden Fluentd servisine gönderilir.
- Logstash: Logların okunabilmesi ve Logstash’a gönderilebilmesi için bir plugin (ör. Filebeat) gerekir; Docker için yerleşik bir driver bulunmaz.
Sonuç
Kubernetes ortamlarında Fluentd, yerleşik Docker logging driver’ı ve parser’ı sayesinde ideal bir aday gibi görünmektedir. Bu yapı sayesinde container logları ek bir dosyaya ihtiyaç duymadan doğrudan toplanabilir ve Elasticsearch gibi hedef sistemlere yönlendirilebilir.
## Elasticsearch vs OpenSearch
### Logların Fluentd'ye Gönderilmesi
Container üzerinde logları Fluentd'ye göndermek için ek bir ajan çalıştırmaya gerek kalmaz. Logstash ile karşılaştırıldığında bu durum mimarinin daha az karmaşık olmasını sağlar ve loglama hatalarının oluşma riskini de azaltır.
### Benchmark Sonuçları
> “Çeşitli testlerin sonuçları dikkate alındığında, Elasticsearch'ün OpenSearch'e kıyasla sürekli olarak daha iyi performans gösterdiği açıkça görülmektedir. Basit sorguların çalıştırılması, verilerin sıralanması, histogram oluşturulması, terim veya aralık sorgularının işlenmesi ya da kaynakların daha verimli kullanılması gibi durumların hepsinde Elasticsearch öne çıkmaktadır.”
> *(Kobar & Sangiorgi, 2023)*
Elasticsearch'ün arama özellikleri OpenSearch'e göre daha gelişmiştir ve AI/ML alanında da geliştirmeler yapmaya başlamıştır.