Elasticsearch Nedir? Ne İşe Yarar?

Büyük verileri doğru bir şekilde depolayabilmek ve analiz edebilmek için öncelikle ihtiyaçlarımızın farkında olmalıyız. Esnek arama, büyük miktarda veri üzerinde tam metin aramaya ihtiyacınız varsa, Elasticsearch doğru seçim olabilir. 

Elasticsearch Nedir?

Elasticsearc nedir; Metni direkt aramak yerine indeksi arar ve çok hızlı bir şekilde sonuç verir. Ayrıca sorgularınızın istatistiksel analizini ve değerlendirmesini yapabilmektedir.

Elasticsearch Text Üzerinden Aramaları Nasıl Yapar?

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) 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ı

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.

Elasticsearch Nasıl Kullanılı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:

  • bin: Çeşitli işletim sistemleri için başlangıç dosyaları vardır.
  • config: ElasticSearch ve günlüğe kaydetmeyi yapılandırabileceğim bir dosya var.
  • lib: Elasticsearch tarafından kullanılan kendi JAR format dosyam var.
  • Modüller: Burada, elastik arama işlevi sağlayan modüller ve işlevsellik eklemek için gereken eklentiler gibi dosyalar bulacaksınız.

İ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.

Elasticsearch Nasıl Çalışı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.

Elasticsearch Avantajları Nelerdir?

Sağlanan REST API sayesinde Elasticsearch kullanımı Elasticsearch nasıl kullanılır ve Elasticsearch avantajları nelerdirkı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;

  • Java tabanlıdır.                                                                                            
  • Apache Lucene dayanmaktadır. (Paylaşım ve replika kavramı ES’de de geçerlidir.)
  • Açık kaynak, veri depolama biçimi, ilişkisel değil, belge odaklıdır.
  • Merkezi olmayan ve ölçeklenebilir bir yapıda çalışabilir.
  • Gerçek zamanlı verilerin analizini sağlar.
  • Tipi, alanlar, belgeler, alanlar, dizinler, tam metin araması, dizinler vb. gibi kavramlara sahiptir. 
  • Restfull API aracılığıyla çalıştırılır ve tüm programlama dillerinde mevcuttur.
  • Veri tipine göre otomatik eşleştirme yapabilirsiniz.
  • Küme yapısına sahiptir ve küme yapısı oldukça basittir. 

Elasticsearch Temel Kavramları

Elasticsearch hakkında pek çok kavram vardır. Ancak temel kavramlar aşağıdaki gibi sıralanmıştır.

  • Indice: Yukarıda bahsedildiği gibi, Elasticsearch, geleneksel ilişkisel veritabanı yerine dizin kavramını kullanır. Elasticsearch kümeleri, birden çok dizin (veritabanı) içerebilir.
  • Type: Dizinde depolanan her belgenin türünü belirten bir türü vardır. type, ilişkisel bir veri tabanındaki bir tabloya karşılık gelir. Örneğin, ürünleri ve kullanıcıları tür olarak değerlendirebilirsiniz. Kavramı, Elasticsearch sürüm 7.0’da kullanımdan kaldırılmıştır. Ancak bu kavram birçok kaynakta bulunabilir.

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.

  • Document: Elasticsearch’te ilişkisel veri tabanı satırları belgeler olarak temsil edilir. Her türün birden fazla belgesi vardır.
  • Field: İlişkisel bir veri tabanının sütun alanına karşılık gelir. Belge birden fazla alan içerebilir. Alanın eşleme için bir alan türü vardır. Bu tür terimleri belge türüyle karıştırmayın. Alan türü, alana dahil edilebilecek veri türünü (tamsayı, dize, nesne vb.) belirtir.
  • İndex: İndex, bir JSON belgeleri yığınıdır. İlişkisel veri tabanının veri tabanına karşılık gelir. Elasticsearch kümeleri birden çok dizin içerebilir.
  • Mapping Elasticsearch’e ve Elasticsearch’ten verilerin nasıl aktarılacağını ve okunacağını tanımlar. Depolanan veri türüne bağlı olarak her bir JSON alanının nasıl davrandığı hakkında bilgi içerir. İlişkisel bir veri tabanının şemasına karşılık gelir. Atamalar manuel olarak yapılabilir. Eşleme yapılmazsa, Elasticsearch bunu otomatik olarak yapar (dinamik eşleme).
  • Node: Kümenizde çalışan her Elasticsearch örneğine düğüm adı verilir. Düğüm; veri depolama, indeksleme ve almadan sorumludur. Elasticsearch açıkken düğüm, küme adına dayalı olarak tek noktaya yayın keşfi yapar ve uygun kümeye katılır. Node farklı işlev ve rollere sahip olabilir. Daha fazla ayrıntı bu bağlantıda bulunabilir.
  • Shard: Index’lerde çok fazla veri performans, ölçeklenebilirlik ve bakım sorunlarına neden olabilir. Bu nedenle, dizin Lucene örnekleri olan parçalara bölünebilir. Dizin oluşturulduktan sonra, parça sayısı belirlenir ve veriler parçalar arasında dağıtılır. Bu yapı, farklı parçalar üzerinde gelen isteklerin yatay ölçeklendirilmesini ve paralel işlenmesini sağlar.
  • Replica: Elasticsearch, parça veya düğüm hasarı ve arıza süresi gibi durumları tolere etmek ve erişilebilirliği sağlamak için parçaların kopyalarını oluşturur. Parçaların birden fazla kopyası olabilir. Kopyalanan parçaya birincil parça adı verilir. Ortaya çıkan kopyaya replika denir. Kopyası, erişilebilirlik için birincil parça ile aynı düğümde olmamalıdır. Aramalar eşleme tarafından paralel olarak işlendiğinden, eşlemesi de performansa katkıda bulunur.
  • Indexing & Search

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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

E-ticaret Sitenizi Korumanız İçin 5 Kritik Öneri

En Çok Kullanılan Pazarlama Terimleri