Makale Başlıkları
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çlar döndürebilir. Özelleştirilebilir altyapısı ile büyük veri yönetiminde zaman ve kaynak tasarrufu sağlar. Bu makalede Elasticsearch’ün sunduğu avantajları ve kullanım alanlarını detaylı bir şekilde inceleyeceğiz.

Elasticsearch veri depoladığınızda, verilerde belirttiğiniz alanlar Apache Lucene altyapısı kullanılarak indekslenir. Elasticsearch, verileri kaydederken kelimenin hangi belgede (satırda) olduğunu indeksler. Ardından, tüm verileri aramak yerine kelime aramak istiyorsanız, sonuçları hızlı bir şekilde bulmak için daha önce oluşturduğunuz dizin listesini kullanabilirsiniz.
Elasticsearch altyapısı tamamen Java ile yazılmış dağıtılmış bir mimariye sahip açık kaynaklı bir projedir. Arama motorları, arama motoru konularıyla ilgilenen herkesin duymuş olabileceği Apache Lucene projesine dayanmaktadır. Lucene projesi, düz metin indeksleme ve arama sağlar. Buna yapılandırılmamış denir.
Lucene altyapısı üzerinde yapılandırma adı verilen 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ğer belgelerden ayırt etmek için benzersiz bir kimliğe sahip olmalıdır.
İndirilen dosyayı zip dosyasından çıkarın, klasör adından sürüm numarasını kaldırın ve “C” root dizinine yerleştirin.
Alınan dosyaya hızlı bir bakışla şöyle baktığımızda:
İndirme işlemini önceden gerçekleştirin, “C” root dizininin “elasticsearch” yolundaki “config” dosyasının altındaki “elasticsearch.yml” dosyasını düzenleyin ve ayar işlemini gerçekleştirin. Yapılandırma sırasında yapılacak işlem, küme adını veya düğüm adını belirlemektir.
Elasticsearch.yml dosyasını herhangi bir metin düzenleyicide açın ve aşağıdaki iki değişikliği yapın.
# Use a descriptive name for your cluster: # cluster.name: elastic_gokalp_test # # ———————————— Node ———————————— # # Use a descriptive name for the node: # node.name: gokalp_test_01 #
Konfigurasyon işlemleri sadece bu kadardır.
Her şeyden önce, Elasticsearch çerçevesi en önemlisi çok hızlıdır. Bu hızı sağlamak için sayılar, coğrafi değerler, tarihler ve metin içerebilen özel bir dizin yapısı kullanıyoruz. Ancak kullanıcı olarak bu teknik detayları bilmenize gerek yoktur. Temel olarak, Elasticsearche JSON formatında milyonlarca veya trilyonlarca satırdan oluşan verileri atayabilir ve uygun konfigürasyon ve kullanımı çok kolay bir API ile verilere milisaniyeler içinde erişebilirsiniz.
Elasticsearch, petabaytlarca veri depolayan dizüstü bilgisayarlarda veya büyük sunucu çiftliklerinde çalışabilir. Ayrıca, bunun için karmaşık ayarlar gerekmez. Küme kurulumu Elasticsearch altyapısı tarafından otomatik olarak yapılır. Ayrıca, dizüstü bilgisayarınızda kurulu Elasticsearch ile iletişim kurmak, binlerce sunucudan oluşan bir Elasticsearch kümesi ile iletişim kurmakla aynıdır. Elasticsearch, verilerinizi ve dizinlerinizi nasıl tutacağınızı da otomatik olarak belirler.
Sağlanan REST API sayesinde Elasticsearch kullanımı Elasticsearch nasıl kullanılır ve Elasticsearch avantajları nelerdir, kısmına geleceksek, rakiplerine göre çok daha kolaydır. Ayrıca her dil için oluşturulmuş özel kütüphaneler ile Java, C#, Python, Javascript, PHP ve Ruby gibi birçok programlama dilinde kullanılabilir. Diğer avantajları ise şu şekildedir;
Elasticsearch hakkında pek çok kavram vardır. Ancak temel kavramlar aşağıdaki gibi sıralanmıştır.
Deprecated Edilmesinin Sebebi:
Type’ın ilişkisel bir veri tabanındaki bir tabloya karşılık geldiğini düşünüyorum, ama değil. İlişkisel veritabanı tabloları birbirinden bağımsızdır. Örneğin, kullanıcı tablosundaki ad alanı ile ürün tablosundaki ad alanı bağlantılı değildir. Ancak, Elasticsearch’te aynı dizin altında aynı adı taşıyan alanlar, arka planda aynı Lucene alanına karşılık gelir.
Yani, kullanıcı tipi adı alanı ve ürün tipi adı alanı, önceki örnekte olduğu gibi aynı alanda saklanır. Bu bazı sorunlara neden olur. Örneğin, bir isDeleted alanı türünün tamsayı türünde olması gerektiğini düşünüyorsanız, aynı dizindeki başka bir tür alanı Boole değeri olarak tutabilir. Bu nedenle tip kavramı ortadan kaldırılmıştır.
Elasticsearch, verileri kaydederken kelimelerin göründüğü belgeler hakkındaki bilgileri indeksler. Bu yapı, bir kitabın dizin kısmı gibidir. Kitap dizini, hangi kelimelerin hangi sayfalarda olduğu hakkında bilgi içerir. Elasticsearch, hangi kelimelerin hangi belgelerde göründüğüyle ilgili bilgileri depolamak için Apache Lucene’nin ters çevrilmiş dizin altyapısını da kullanır.
Ters çevrilmiş dizin, aşağıdaki resimde gösterildiği gibi bir belgedeki benzersiz sözcükleri ve bunların bulundukları yeri içeren bir veri yapısıdır. Bir araması sırasında Elasticsearch, bu kelimeyi içeren belgeler için ters çevrilmiş dizin listesini arar ve tüm verileri aramak yerine onu bir JSON nesnesi olarak döndürür. Bu belgeler de değerlendirme algoritmasına göre değerlendirilir. Derecelendirme algoritması, belgede aranan kelimelerin sıklığı gibi çeşitli kriterlere göre belirlenir.
Alastyr Teknoloji, domain (alan adı), web hosting, bulut sunucu (cloud server) ve veri merkezi hizmetleri ile siz de projelerinizi hayata geçirebilirsiniz. Hızlı, güvenli ve ekonomik web çözümlerimiz ile ihtiyacınız olan performansa sahip olun. Türkiye’nin en çok tavsiye edilen domain ve hosting firması Alastyr, güçlü teknoloji alt yapısı, en güncel yazılımları, 7/24 Türkçe Destek hizmeti ve 15 gün koşulsuz iade garantisi ile hizmet vermektedir.
Web projeleriniz için en uygun fiyatlarla domain satın al. Bireysel ve kurumsal web projeleriniz için bulut sunucu kirala. Web sitelerinizi hızlı, güvenli ve yüksek performans ile yayınlayabileceğiniz en iyi hosting paketine sahip ol.