elasticsearch

Elasticsearch Nedir? Ne İşe Yarar?

Kısaca

Elasticsearch, Apache Lucene üzerine kurulu, dağıtık ve açık kaynaklı bir arama ve analitik motorudur. Milyonlarca, hatta milyarlarca kaydın içinde tam metin aramayı milisaniyeler içinde yapabilmesini “ters çevrilmiş dizin” (inverted index) yapısına borçludur. Bugün yalnızca arama için değil; log analizi, izleme (observability), güvenlik (SIEM) ve yapay zeka destekli semantik/vektör arama için de yaygın kullanılır.

  • JSON belgelerini saklar, REST API ile sorgulanır ve neredeyse her programlama diliyle (Java, Python, PHP, JavaScript, C#, Ruby) çalışır.
  • Ölçeklenebilir mimarisi (node, shard, replica) sayesinde tek sunucudan binlerce sunucuya büyüyebilir; yüksek erişilebilirlik sağlar.
  • Kibana, Logstash ve Beats ile birlikte “Elastic Stack” (eski adıyla ELK) olarak kullanılır; arama, görselleştirme ve veri toplama bir arada gelir.

Elasticsearch, büyük veri analizi ve hızlı metin tabanlı arama ihtiyaçlarını karşılayan, güçlü ve ölçeklenebilir bir arama motorudur. Özellikle web siteleri, e-ticaret platformları ve log yönetim sistemleri gibi yoğun veri trafiğine sahip uygulamalarda yüksek performansıyla dikkat çeker. Açık kaynaklı yapısı sayesinde geliştiricilere esnek çözümler sunar.

Veri indeksleme ve hızlı sorgulama yetenekleri sayesinde Elasticsearch, milyonlarca veri kaydında bile milisaniyeler içinde sonuç döndürebilir. Özelleştirilebilir altyapısı ile büyük veri yönetiminde zaman ve kaynak tasarrufu sağlar. Bu rehberde Elasticsearch’ün nasıl çalıştığını, temel kavramlarını, kullanım alanlarını ve güncel sürümlerle gelen yenilikleri uçtan uca ele alıyoruz; bir konuda kafanıza takılan sorunun yanıtını burada bulmanızı hedefliyoruz.

Elasticsearch nedir ve nasil calisir gorseli

Elasticsearch Nedir? Kısa Tanım

Elasticsearch, 2010 yılında Shay Banon tarafından geliştirilen, Java ile yazılmış dağıtık (distributed) bir arama ve analitik motorudur. İlişkisel veritabanlarının (MySQL, PostgreSQL gibi) tablolarına ve satırlarına dayalı yapısının aksine, Elasticsearch verileri JSON belgeleri olarak saklar ve bunları arama için optimize eder. Bu yüzden çoğu zaman “NoSQL belge tabanlı arama motoru” olarak da anılır.

En çok bilinen kullanım şekli, onu Kibana, Logstash ve Beats ile birlikte çalıştırmaktır. Bu dörtlü birleşime geçmişte ELK Stack (Elasticsearch, Logstash, Kibana) denirdi; Beats’in eklenmesiyle bugün resmi adı Elastic Stack‘tir. Elasticsearch motorun kalbidir; veriyi saklar ve arar. Kibana bu veriyi görselleştirir, Logstash ve Beats ise farklı kaynaklardan veriyi toplayıp Elasticsearch’e taşır.

Mail hosting 1 ay ücretsiz

Elasticsearch Text Üzerinden Aramaları Nasıl Yapar?

Elasticsearch veri depoladığınızda, verilerde belirttiğiniz alanlar Apache Lucene altyapısı kullanılarak indekslenir. Elasticsearch, verileri kaydederken kelimenin hangi belgede (satırda) geçtiğini indeksler. Ardından tüm verileri taramak yerine yalnızca aradığınız kelimeyi aramak istediğinizde, sonuçları hızlıca bulmak için önceden oluşturulan bu dizin listesini kullanır.

Bu yaklaşımın kalbinde ters çevrilmiş dizin (inverted index) bulunur. Bir kitabın sonundaki “indeks” bölümünü düşünün: hangi kelimenin hangi sayfada geçtiğini listeler. Böylece bir kelimeyi bulmak için kitabın tamamını sayfa sayfa okumanız gerekmez; doğrudan indeks bölümüne bakarsınız. Elasticsearch de aynen böyle çalışır: her belgeyi tek tek taramak yerine, “bu kelime şu belgelerde geçiyor” bilgisini önceden hazırlar. İşte milyonlarca kaydın içinde milisaniyelik yanıt süresi buradan gelir.

Elasticsearch Altyapısı

Elasticsearch altyapısı, tamamen Java ile yazılmış, dağıtık bir mimariye sahip açık kaynaklı bir projedir. Arama motorlarıyla ilgilenen herkesin duymuş olabileceği Apache Lucene projesine dayanır. Lucene, düz metin indeksleme ve aramayı sağlar; bu tür yapılandırılmamış (unstructured) veriyle çalışır.

Lucene altyapısı üzerine kurulu Elasticsearch veri yapıları ise belirli dokümanları indekslemenize ve aramanıza olanak tanır. Temel olarak Elasticsearch’te depolanan her belge bir JSON nesnesidir ve bu belgeyi diğerlerinden ayırt etmek için benzersiz bir kimliğe (ID) sahiptir.

Elasticsearch ve İlişkisel Veritabanı Terim Karşılıkları

İlişkisel veritabanlarına aşina iseniz, Elasticsearch kavramlarını şu tabloyla daha hızlı kavrayabilirsiniz:

İlişkisel Veritabanı (SQL) Elasticsearch Açıklama
Veritabanı (Database) Index Verinin üst düzeyde toplandığı kap
Tablo (Table) Index / Mapping Type kavramı 7.0 ile kaldırıldı; artık her index tek tip belge tutar
Satır (Row) Document (Belge) JSON formatında tek bir kayıt
Sütun (Column) Field (Alan) Belgedeki tekil veri parçası
Şema (Schema) Mapping Alanların veri tiplerini ve davranışını tanımlar
SQL sorgusu Query DSL (JSON) REST API üzerinden JSON ile yazılır

Elasticsearch Nasıl Kullanılır?

Yerel ortamda denemek isterseniz kurulum oldukça basittir. Resmi siteden işletim sisteminize uygun paketi indirin, zip dosyasını çıkarın, klasör adından sürüm numarasını kaldırın ve uygun bir dizine yerleştirin (Windows’ta örneğin “C” kök dizinine koyabilirsiniz).

Çıkan dosyaya hızlı bir bakış attığınızda şu klasörleri görürsünüz:

  • bin: Çeşitli işletim sistemleri için başlangıç (çalıştırma) dosyaları burada bulunur.
  • config: Elasticsearch’ü ve günlük (log) ayarlarını yapılandırabileceğiniz dosyalar burada yer alır.
  • lib: Elasticsearch tarafından kullanılan JAR formatındaki kütüphane dosyaları bulunur.
  • modules: Elastik arama işlevini sağlayan modüller ve işlevsellik eklemek için gereken eklenti dosyaları burada tutulur.

İndirme işlemini tamamladıktan sonra config klasörünün altındaki elasticsearch.yml dosyasını bir metin düzenleyiciyle açın. Burada yapacağınız temel ayar, küme adını (cluster.name) ve düğüm adını (node.name) belirlemektir. Örnek bir yapılandırma şu şekilde görünür:

  • # Use a descriptive name for your cluster:
  • cluster.name: elastic_test
  • # Use a descriptive name for the node:
  • node.name: test_node_01

Tek düğümlü bir deneme ortamı için başlangıçta yapılandırma çoğunlukla bu kadardır. Üretim (production) ortamında ise güvenlik (TLS, kullanıcı yetkilendirme), bellek (heap) ayarları ve düğüm rolleri gibi konuları ayrıca planlamak gerekir.

Elasticsearch Nasıl Çalışır?

Her şeyden önce Elasticsearch çok hızlıdır. Bu hızı sağlamak için sayılar, coğrafi değerler (geo), tarihler ve metin içerebilen özel bir dizin yapısı kullanır. Ancak kullanıcı olarak bu teknik detayları bilmenize gerek yoktur. Temel olarak Elasticsearch’e JSON formatında milyonlarca, hatta milyarlarca satırdan oluşan veriyi gönderebilir; uygun yapılandırma ve oldukça basit bir API ile bu verilere milisaniyeler içinde erişebilirsiniz.

Elasticsearch, dizüstü bir bilgisayardan petabaytlarca veri tutan büyük sunucu çiftliklerine kadar her ölçekte çalışabilir. Bunun için karmaşık ayarlar gerekmez; küme kurulumunu altyapı büyük ölçüde otomatik yönetir. Dizüstü bilgisayarınızdaki tek düğümlü bir Elasticsearch ile iletişim kurmak, binlerce sunucudan oluşan bir Elasticsearch kümesiyle iletişim kurmakla aynı mantığa dayanır. Elasticsearch, verilerinizi ve dizinlerinizi nasıl tutacağını da otomatik olarak belirleyebilir.

Elasticsearch dagitik mimari ve indeksleme calisma sekli

Elasticsearch Temel Kavramları

Elasticsearch hakkında pek çok kavram vardır. Bir sistemi doğru kurmak ve sorunsuz ölçeklendirmek için aşağıdaki temel kavramları bilmek önemlidir:

  • Document (Belge): İlişkisel veritabanındaki bir satıra karşılık gelir. Elasticsearch’te her belge bir JSON nesnesidir ve benzersiz bir kimliğe (ID) sahiptir.
  • Field (Alan): İlişkisel veritabanının sütununa karşılık gelir. Bir belge birden fazla alan içerebilir. Her alanın, içerebileceği veri türünü (tam sayı, metin, tarih, nesne vb.) belirten bir alan tipi vardır.
  • Index: Birbiriyle ilişkili JSON belgelerinin toplandığı yapıdır; ilişkisel veritabanındaki “veritabanı” kavramına yakındır. Bir Elasticsearch kümesi birden çok index içerebilir.
  • Mapping: Verilerin Elasticsearch’e nasıl aktarılacağını ve okunacağını tanımlar; ilişkisel veritabanının şemasına karşılık gelir. Manuel tanımlanabilir; tanımlanmazsa Elasticsearch otomatik yapar (dinamik eşleştirme).
  • Node (Düğüm): Kümenizde çalışan her Elasticsearch örneğine düğüm denir. Düğüm; veri depolama, indeksleme ve alma (retrieval) işlerinden sorumludur. Düğümler farklı rollere (master, data, ingest vb.) sahip olabilir.
  • Shard (Parça): Bir index’teki çok fazla veri performans ve bakım sorununa yol açabilir. Bu yüzden index, “shard” adı verilen Lucene örneği parçalarına bölünebilir. Bu yapı, isteklerin yatay ölçeklenmesini ve paralel işlenmesini sağlar.
  • Replica (Kopya): Elasticsearch, düğüm/parça arızasına karşı dayanıklılık ve erişilebilirlik için parçaların kopyalarını oluşturur. Replikalar, birincil parçayla aynı düğümde olmadığı için bir düğüm düştüğünde veri kaybolmaz; ayrıca aramalar paralel işlendiğinden performansa da katkı sağlar.

Type Kavramı Neden Kaldırıldı?

Eski sürümlerde bir de Type kavramı vardı ve çoğu kişi bunu ilişkisel veritabanındaki tabloya benzetiyordu; ancak gerçekte öyle değildi. İlişkisel veritabanı tabloları birbirinden bağımsızdır: kullanıcı tablosundaki “ad” alanı ile ürün tablosundaki “ad” alanı birbiriyle ilişkili değildir. Elasticsearch’te ise aynı index altında aynı adı taşıyan alanlar, arka planda aynı Lucene alanına karşılık gelirdi. Bu durum, aynı isimli iki alanın farklı veri tiplerinde (biri tam sayı, diğeri metin) tanımlanması gibi sorunlara yol açıyordu. Bu nedenle type kavramı Elasticsearch 7.0 ile kullanımdan kaldırıldı; bugün her index tek tip belge tutar. Eski kaynaklarda hala bu kavramla karşılaşabilirsiniz.

İndeksleme ve Arama (Indexing & Search)

Elasticsearch, verileri kaydederken kelimelerin geçtiği belgeler hakkındaki bilgiyi indeksler. Yukarıda değinildiği gibi bu yapı, bir kitabın dizin (indeks) kısmına benzer; hangi kelimenin hangi sayfada geçtiği bilgisini tutar. Elasticsearch, hangi kelimelerin hangi belgelerde geçtiğini saklamak için Apache Lucene’nin ters çevrilmiş dizin altyapısını kullanır.

Bir arama sırasında Elasticsearch, aranan kelimeyi içeren belgeler için ters çevrilmiş dizin listesine bakar ve tüm veriyi taramak yerine sonucu bir JSON nesnesi olarak döndürür. Dönen belgeler, bir derecelendirme (relevance) algoritmasına göre sıralanır. Bu algoritma, kelimenin belgede geçme sıklığı gibi çeşitli kriterlere dayanır; böylece en alakalı sonuç en üste çıkar.

Elasticsearch Avantajları Nelerdir?

Sunduğu REST API sayesinde Elasticsearch kullanımı, pek çok rakibe göre daha kolaydır. Her dil için hazırlanmış resmi istemci kütüphaneleriyle Java, C#, Python, JavaScript, PHP ve Ruby gibi birçok programlama dilinde sorunsuz çalışır. Diğer avantajları ise şunlardır:

  • Java tabanlıdır ve Apache Lucene üzerine kuruludur (shard ve replica kavramları da buradan gelir).
  • Açık kaynaklıdır; ilişkisel değil, belge (document) odaklı bir veri saklama biçimi kullanır.
  • Merkezi olmayan, yatay ölçeklenebilir bir yapıda çalışır.
  • Gerçek zamanlı (near real-time) veri analizine olanak tanır.
  • Index, document, field, full-text search gibi güçlü kavramlara sahiptir.
  • RESTful API ile yönetilir ve hemen tüm programlama dillerinde kullanılabilir.
  • Veri tipine göre otomatik eşleştirme (dinamik mapping) yapabilir.
  • Küme (cluster) yapısına sahiptir ve bu yapının kurulumu oldukça basittir.
  • Kibana ile görselleştirme, Logstash/Beats ile veri toplama gibi güçlü bir ekosistemle gelir.

Elasticsearch Kullanım Alanları

Elasticsearch’ün yalnızca “site içi arama” için kullanıldığını düşünmek yaygın bir yanılgıdır. Gerçekte çok daha geniş bir yelpazede karşınıza çıkar:

  • Site içi ve e-ticaret araması: Ürün aramada otomatik tamamlama (autocomplete), yazım hatası toleransı (fuzzy search) ve filtreleme/yüzleştirme (faceting) sağlar.
  • Log ve olay analizi: Sunucu, uygulama ve güvenlik loglarını merkezi olarak toplayıp aranabilir hale getirir. ELK Stack’in en klasik kullanım alanıdır.
  • İzleme ve gözlemlenebilirlik (observability): Metrik, log ve iz (trace) verilerini tek yerde toplayarak sistem sağlık durumunu izlemenizi sağlar.
  • Güvenlik (SIEM): Farklı kaynaklardan gelen logları ilişkilendirerek tehditleri gerçek zamanlı tespit etmeye yardımcı olur.
  • Yapay zeka ve semantik arama: Yeni sürümlerle gelen vektör arama (kNN/dense vector) özelliği sayesinde anlam tabanlı arama, öneri sistemleri ve RAG (Retrieval-Augmented Generation) uygulamaları kurulabilir.

Elasticsearch, OpenSearch ve Apache Solr Karşılaştırması

Elasticsearch’e karar verirken sık karşılaşılan iki alternatif vardır: OpenSearch (2021’de Elasticsearch’ün 7.10 sürümünden ayrılan, AWS öncülüğündeki açık fork) ve Apache Solr. Üçü de Apache Lucene üzerine kuruludur; bu yüzden çekirdek arama yetenekleri benzerdir. Farklar daha çok lisans, ekosistem ve yönetim modelinde belirir:

Özellik Elasticsearch OpenSearch Apache Solr
Temel kütüphane Apache Lucene Apache Lucene Apache Lucene
Geliştiren Elastic NV AWS öncülüğünde topluluk Apache Software Foundation
Lisans AGPLv3 / SSPL / Elastic License 2.0 (seçimli) Apache 2.0 Apache 2.0
API / sorgu JSON tabanlı Query DSL, zengin REST API Elasticsearch’e çok benzer REST API HTTP + XML/JSON
Görselleştirme Kibana OpenSearch Dashboards Harici (örneğin Banana/3. parti)
Vektör / AI arama Güçlü (kNN, ELSER, BBQ) kNN desteği var Sınırlı, gelişiyor
Öne çıkan kullanım Kolay ölçeklenme, analitik, AI arama Tamamen açık lisans isteyenler Klasik kurumsal arama, faceting

Özetle: Tamamen serbest (Apache 2.0) bir lisans önceliğiyseniz OpenSearch ya da Solr öne çıkar. Zengin analitik, kolay ölçeklenme ve güçlü yapay zeka/vektör arama yetenekleri istiyorsanız Elasticsearch genellikle daha avantajlıdır. Solr ise hiçbir kurumsal sahibi olmayan, tamamen topluluk yönetimindeki tek büyük projedir ve lisans belirsizliğinden çekinen kurumlar için güvenli bir liman olarak görülür.

Elasticsearch Lisans Durumu (Güncel)

Elasticsearch’ün lisans geçmişi sık karıştırılır, bu yüzden net olalım. Proje başta Apache 2.0 lisansıyla yayınlanıyordu. 2021’de Elastic, bulut sağlayıcılarının ürünü “hizmet olarak” sunmasını sınırlamak amacıyla lisansı SSPL ve Elastic License’a taşıdı; bu değişiklik OpenSearch forkunu doğuran ana sebep oldu. 2024’te ise Elastic, OSI onaylı AGPLv3 lisansını da bir seçenek olarak ekledi. Bugün Elasticsearch; AGPLv3, SSPL 1.0 ve Elastic License 2.0 arasından seçim yapılabilen “üçlü lisans” modeliyle dağıtılmaktadır. Kendi sunucunuza kurup kullanmak çoğu senaryoda ücretsizdir; ücretli abonelik katmanları (Platinum, Enterprise) ise ek kurumsal özellikler ve destek sunar.

Elasticsearch Çalıştırmak İçin Nasıl Bir Sunucu Gerekir?

Elasticsearch, Java tabanlı ve bellek (RAM) ile diskin yoğun kullanıldığı bir uygulamadır. Küçük bir site içi arama veya deneme ortamı paylaşımlı hosting yerine genellikle kaynakların garanti edildiği bir ortam ister. Pratikte şunlara dikkat etmek gerekir:

  • RAM: Elasticsearch, JVM heap’i için bol bellek sever. Küçük projelerde bile 2-4 GB RAM rahat bir başlangıç noktasıdır; veri büyüdükçe ihtiyaç artar.
  • Disk: İndeksler diskte yer kaplar; hızlı okuma/yazma için SSD (tercihen NVMe/all-flash) ciddi fark yaratır.
  • CPU: İndeksleme ve karmaşık sorgular işlemci yoğundur; çok çekirdek avantaj sağlar.
  • Tam yetki (root): Servisi kurmak, JVM ve sistem ayarlarını yapmak için sunucuya tam erişim gerekir.

Bu yüzden Elasticsearch en çok VPS veya bulut sunucu üzerinde tercih edilir. Alastyr’in bulut sunucu ve fiziksel/sanal sunucu çözümlerinde, İzmir’deki kendi veri merkezinde barınan, Intel Xeon Gold işlemcili ve Dell EMC Unity all-flash depolama üzerinde çalışan altyapılarla projelerinizi güçlü bir zeminde yürütebilirsiniz. SSD/NVMe hızının önemli olduğu indeksleme iş yüklerinde bu donanım farkı doğrudan performansa yansır. Daha standart web projeleri ve hosting ihtiyaçları için ise paylaşımlı paketler yeterli olurken, alan adı tarafındaki ihtiyaçlarınızı domain sorgulama sayfasından halledebilirsiniz.

Sıkça Sorulan Sorular

Elasticsearch tam olarak ne işe yarar?

Elasticsearch, büyük hacimli veride hızlı tam metin araması ve gerçek zamana yakın analitik yapmaya yarar. En yaygın kullanım alanları site içi/e-ticaret araması, log analizi, izleme (observability), güvenlik (SIEM) ve yapay zeka destekli semantik/vektör aramadır.

Elasticsearch bir veritabanı mıdır?

Tam anlamıyla geleneksel bir ilişkisel veritabanı değildir. Verileri JSON belgeleri olarak saklayan, arama ve analitik için optimize edilmiş bir motordur. Birincil veri deposu olarak da kullanılabilir; ancak çoğu şirket onu MySQL/PostgreSQL gibi bir veritabanının yanında, arama katmanı olarak konumlandırır.

ELK Stack ile Elastic Stack aynı şey mi?

Büyük ölçüde evet. “ELK” kısaltması Elasticsearch, Logstash ve Kibana’nın baş harflerinden gelir. Bu üçlüye Beats (veri toplayan hafif ajanlar) eklenince resmi ad Elastic Stack olmuştur. Yani Elastic Stack, ELK’nin güncellenmiş ve genişletilmiş halidir.

Elasticsearch ücretsiz mi?

Temel sürüm çoğu senaryoda ücretsiz kullanılabilir. Elasticsearch bugün AGPLv3, SSPL 1.0 ve Elastic License 2.0 arasından seçilen üçlü lisans modeliyle dağıtılır. Kurumsal ek özellikler ve resmi destek isteyenler için ücretli abonelik katmanları (Platinum, Enterprise) mevcuttur.

Elasticsearch ile OpenSearch arasındaki fark nedir?

OpenSearch, Elasticsearch’ün 7.10 sürümünden 2021’de ayrılan, Apache 2.0 lisanslı açık bir forktur. Üçü de Apache Lucene üzerine kurulduğundan çekirdek yetenekleri benzerdir. Tamamen serbest lisans önceliğiyseniz OpenSearch, daha zengin analitik ve güçlü yapay zeka/vektör arama istiyorsanız Elasticsearch öne çıkar.

Elasticsearch hangi programlama dilleriyle kullanılır?

Elasticsearch REST API üzerinden çalıştığı için neredeyse her dille kullanılabilir. Java, Python, PHP, JavaScript (Node.js), C# ve Ruby için resmi istemci kütüphaneleri bulunur; bu da entegrasyonu kolaylaştırır.

Elasticsearch’te shard ve replica nedir?

Shard (parça), bir index’in bölündüğü daha küçük Lucene birimleridir ve veriyi sunuculara dağıtarak yatay ölçeklenmeyi sağlar. Replica ise shard’ların kopyasıdır; bir sunucu veya parça arızalandığında veri kaybını önler ve aramaları paralel çalıştırarak performansa katkı sağlar.

Elasticsearch yapay zeka ve vektör arama destekliyor mu?

Evet. Yeni sürümler dense vector alanları ve yaklaşık kNN (k-nearest neighbor) aramayı destekler. Bu sayede anlam tabanlı (semantik) arama, öneri sistemleri ve RAG temelli yapay zeka uygulamaları kurulabilir; klasik anahtar kelime aramasıyla birlikte “hibrit arama” da yapılabilir.

Elasticsearch çalıştırmak için nasıl bir sunucu gerekir?

Elasticsearch bellek, disk ve işlemci kaynaklarını yoğun kullanır; bu yüzden kaynakların garanti edildiği bir VPS veya bulut sunucu önerilir. Hızlı SSD/NVMe depolama, yeterli RAM ve servisi kurmak için tam (root) erişim performans için önemlidir. Paylaşımlı hosting bu iş yükü için genellikle uygun değildir.

Elasticsearch için güçlü bir altyapı mı arıyorsunuz?

İzmir’deki kendi veri merkezimizde, all-flash NVMe depolama ve Intel Xeon Gold işlemcili bulut sunucularda projelerinizi yüksek performansla çalıştırın. 7/24 Türkçe destek, ücretsiz taşıma ve 14 gün para iade güvencesiyle.

Bulut Sunucu Paketlerini İncele

Türkiye'nin En Çok Tavsiye Edilen Domain, Hosting ve Bulut Servis Sağlayıcısı
İnternet sitesi Alastyr İnternet Sitesi
Yazı oluşturuldu 511

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön