Bugün gittiğim bir seminderde ElasticSearch konusu anlatıldı. Daha önce bu konuyla ilgili araştırmalarım vardı. Fakat bu seminer de tam üstüne gelince artık bir yazı yazalım diye düşündüm.
ElasticSearch ne işe yarar? Buradan başlayalım.
Bir kariyer siteniz var farzedelim. Ve veritabanınızda 50 bin CV var. Her bir CV için de tutulan bir sürü parametreniz var Yabancı dil bildisi, askerlik durumu, öğrenim durumu, seminerler, deneyimleri gibi. Bu CVler arasından bir kayıt çağıracaksınız. Özellikleri şöyle olsun: Yaşı en fazla 30, Erkek, İngilizce ve Almanca bilen, Askerliğini yapmış, Evli, Ehliyeti olan, En az iki yıl iş deneyimi olan, üniversite Bilgisayar mühendislik bölümü okumuş.
Bunu veritabanına sorgu olarak gönderdiğimizde en az 10 tane inner join ile ilişkili bir sorgu çağırmamız gerekiyor. Performans olarak 50 bin CV arasından seçilip geleceği için sii bayağı bekletecektir. Üstelik bu sorguyu sizinle beraber 2-3-10 kişi de yaptığını düşünürsek server ve veritabanınız buna fazla dayanamaz. İşte bu tür sorunları yaşamamak için geliştirilen sistemlerden birisi de ElasticSearch'tır.
ElasticSearch Java tabanlı bir uygulamadır. veritabanındaki kayıtları bir kez json olarak kaydettiğimizde işlem aramalar için hazırlanmış oluyor. Çalışma şekli şöyle; arayacağımız kelime/paremetreleri ElasticSearch eklentimiz yardımıyla arıyoruz. ElasticSearch daha önce kaydettiğimiz json dosyaları içinde belirlediğimiz kriterlere uygun kayıt var mı onu buluyor. Bize sonucu getiriyor.
Çok performanslı bir sistem olduğunu gördüm. Üzerinde çalışmalar yaptıkça sizinle paylaşacağım.
Haydar Külekçi'ye anlatımları için teşekkür ederim.