SlideShare a Scribd company logo
1
İbrahim TAŞYURT
Elasticsearch ve Udemy
Kullanım Pratikleri
Ajanda
2
Udemy
Elasticsearch ve Temel Arama Kavramları
Udemy’de Elasticsearch kullanımı:
İndeksleme
Temel arama işlevleri
Metin Analizi
Çoklu dil desteği
TF ve IDF değerlerinin çıkarımı
Udemy
3
Video tabanlı Online Eğitim Platformu ve Pazaryeri
+12 Milyon Aktif Kullanıcı
50 Bin Ders
Web, Mobil ve AppleTV uygulamaları
San Francisco, Ankara ve Dublin ofisleri
Toplam 254 çalışan, 85+ Mühendis
Udemy Türkiye Ofisi:
Udemy (Discovery)
4
Amaç: Doğru kullanıcıyı doğru dersle buluşturmak
Alt Takımlar
Arama (Search)
Öneri (Recommendation)
Kanallar(Channel)
Veri Bilimi (Data Science) destekli çalışmalar
Kullanılan araçlardan bazıları:
Elasticsearch
5
Arama Motoru ve İlişkisel Olmayan Veritabanı
Java ile geliştirilmiş
Açık Kaynaklı
Apache Lucene tabanlı
Dağıtık
Hata dayanıklı(Fault tolerant)
Ölçeklendirilebilir
Apache Solr ile karşılaştırma
6
Ölçeklendirebilme avantajı
İdame Kolaylığı
Daha kullanışlı API
Temel Elasticsearch (ES) Kavramları
7
Node: Her bir çalıştırılabilir ES sunucusu
Cluster(Küme): Verinin dağıtık ve tutarlı şekilde tutulduğu Node grubu
Index: Benzer karakterdeki verilerin(doküman) saklandığı yapı
Document(Doküman): İndekslenebilen temel veri yapısı
JSON
Field(Alan): Dokümanın üstündeki alanlar
Shard: Her bir indeksin içinde dokümanların bir kısmını tutan bölüm
Örnek Cluster Yapısı
8
Örnek:
4 Node
2 Shard
1 Replica
Herhangi bir Node
devredışı kaldığında,
cluster çalışmaya
devam eder.
Shard ve Replicalar
9
Shard:
Her shard bir Lucene indeksidir.
Sorgular her shard üzerinde çalıştıktan sonra, koordinatör
node üzerinde birleştirilir (scatter/gather).
Shard sayısı performans/ölçeklendirme üzerinde etkilidir.
Replica:
Hata dayanıklılığı
Sorgu performansında iyileşme
Temel Arama Kavramları
10
Relevance(İlgi): Bir aramanın, dokümanla örtüşmesi/benzerliği.
Terim Frekansı(Term Frequency, TF):
Bir terimin metinde geçme sıklığı
Ters Doküman Frekansı(Inverse Document Frequency, IDF)
Bir terimin ne kadar az dokümanda geçtiğinin ölçüsü
Ayırdedicilik
Score(Skor): İlginin numerik ifadesi
Terim Frekansı(Örnek)
11
“Java Programlama ve Temel Programlama Mantığı”
“Java Programlama ve Veri Madenciliği”
“Programlama” aramasında, ilk doküman daha yüksek skora sahip olacaktır.
Terim Java Programlama ve Temel Mantığı
TF 1 2 1 1 1
Terim Java Programlama ve Veri Madenciliği
TF 1 1 1 1 1
Ters Doküman Frekansı (Örnek)
12
Senaryo:
Veri setimiz 100 dokümandan oluşsun.
Bunların 10’unda “Java”, 3’ünde “Elasticsearch” terimleri geçiyor
olsun.
“Elasticsearch” daha yüksek IDF değerine sahip(daha ayırt edici).
Sonuç:
“Java Elasticsearch” aramasında, “Elasticsearch” içeren
dokümanlar daha yüksek skora sahip olur(arama sonuçlarında
Udemy’de Elasticsearch Kullanımı
13
Udemy’de Elasticsearch
14
Versiyon 1.5.2
Canlı, Test ve Geliştirme Kümeleri
7 Node
Çoklu shard ve replica’lar
REST API ile erişim
İstemci Kütüphaneleri:
elasticdsl (Python)
Spring Data (Java)
Kullanılan Araçlar
15
HQ Plugin’i
Cluster’ın izlenmesi ve basit yönetimi
Datadog/New Relic
Performansın ve kaynak kullanımının görüntülenmesi
Sense
Google Chrome Plugin’i
Cluster’a REST istekleri gönderimi
Elasticdump
İndekslenen Dokümanlar
16
Dersler(Course)
Kullanıcılar(User)
Arama Kayıtları(Search Log)
Kullanıcı Mesajları(Message Thread)
Ders Tartışmaları (Course Discussion)
İndeksleme
17
Dokümanlar veritabanından alınarak Elasticsearch’e indekslenir
Gerçek Zamanlı İndeksleme:
Verilerdeki değişiklikler uygulama üzerinden fark edilerek değişen dokümanlar gerçek
zamanlı olarak indekslenir
Periyodik İndeksleme:
Bütün dokümanlar periyodik olarak Elasticsearch üzerinde güncellenirler
Toplu(Bulk) olarak yapıldığı için gerçek zamanlı indekslemeye göre daha performanslıdır
İndekslenen alanlar (Ders)
18
Ders sahibi(instructor) kaynaklı alanlar:
Başlık, Altbaşlık, Ders Tanımı, Ders Veren(instructor) adı….
Dersin kalitesi/performansı ile alakalı alanlar:
Öğrenci sayısı, Puan, Yorumlar, Kazanç, İzlenme miktarı….
Dersin ait olduğu kategori/alt başlık/koleksiyon bilgileri
Dersin ücretine ilişkin bilgiler
Ders ile alakalı etiketler(Tag)
Manuel ve Algoritmik
Temel Arama İşlevleri
19
Amaç:
Aramaya uygun dokümanları(dersleri) bulmak
Aramaya daha çok uyan dokümanların arama sonuçlarında yukarıda
görünmesi
Udemy Arama Sonuçları
Uyarlanmış (Custom) bir fonksiyonla sıralanır
Bileşenler:
Kullanıcı kaynaklı alanlar
Kullanıcı kaynaklı alanlar
20
Başlık, Altbaşlık, Ders verenin adı vs.
Genel olarak TF-IDF hesaplamasına dayalı, uyarlanmış(custom) bir skor
fonksiyonu kullanılır.
Her alan farklı şekilde ağırlıklandırılır(boosting).
Arama yapan kullanıcının dilindeki dersler daha yüksek skorlandırılır.
Kalite/Performans kaynaklı alanlar
21
Dersin aldığı kullanıcı puanları,yorumlar, kazanç, izlenme vs.
Her alan, uyarlanmış birer fonksiyon üzerinden, skora etki eder.
Alanların ağırlıkları ve fonksiyonların parametreleri, geçmiş veriye bağlı
olarak Makine Öğrenmesi yöntemleriyle belirlenir
Filtreleme ve Gruplama
22
Kullanıcının arama sonuçlarını daraltmasını ve aradığı dersi daha kolay
bulmasını sağlar
Elasticsearch’ün filtre ve gruplama(aggregation) özellikleri kullanılır
Filtre Alanları:
Dil
Seviye
Ücret(Ücretli/Ücretsiz)
Özellikler(Altyazı, Quiz, Kodlama Egzersizi)
Filtreleme ve Gruplama (2)
23
Sıralama
24
Kullanıcı arama sonuçlarını belli kriterlere göre sıralayabilir
Kriterler:
İlgi(varsayılan)
Fiyat
Puan
Eklenme Tarihi
Elasticsearch’ün sıralama(sort) işlevi ile yapılır
Otomatik Tamamlama
25
Arama kutusunda, kullanıcının aramasını otomatik olarak tamamlamaya
yardım eder.
Kullanılan bilgiler:
Ders başlığı
Ders veren kullanıcı isimleri
Önceki popüler arama kayıtları
Burada, Elasticsearch’ün metin eşleştirme (text match) işlevleri kullanılır
Prefix eşleşmesi
Öneri (Bunu mu demek istediniz?)
26
Arama sonucuna uygun bir sonuç bulunamadığında alternatif öneriler için
kullanılır.
Elasticsearch’ün öneri(‘suggest’) işlevinden faydalanılır.
Dokümanlarda yer alan daha sık görülen benzer sözcükler öneri olarak
sunulur.
Metin Analizi ve Temizlenmesi
27
Metinler çoğunlukla analiz ve temizleme işlemine ihtiyaç duyarlar:
Dokümanlardaki alanlar
Arama terimleri
Bu amaçla Elasticsearch Analyzer’ları kullanılır.
Her alan için ayrı bir Analyzer tanımlanabilir
Analyzer işlevleri:
Ayrıştırma(Tokenization): Metni parçalara(token) ayırma
Udemy’de Metin Analizi
28
Desteklenen diller:
İngilizce
Japonca
Kullanılan Analyzer’lar
Elasticsearch üzerinde gelen standard Analyzer’lar
Udemy tarafından geliştirilen ‘Udemy Analyzer’
Plugin
Japonca ayrıştırmasını yapan ‘RBL Analyzer’
Metin Analizi İşlemleri
29
Etkisiz sözcük ayrıştırılması
‘A Java Course for Beginners’ -> ‘Java’, ‘Course’ ,’Beginners’
Özel karakterler içeren sözcükler
‘C++’, ‘PL/SQL’
ASCII olmayan karakterlerin dönüşümleri
‘ÇAĞDAŞ’->’CAGDAS’,’ÇAĞDAŞ’
Eşanlamlı sözcüklerin işlenmesi
‘js’,’java script’, ‘javascript’-> ‘javascript’
Çoklu dil desteği (Japonca)
30
Japonca olan doküman metinler, Japonca Analyzer’ı (RBL) kullanılarak ayrı
alanlarda indekslenir.
Japonca arama terimleri, bu alanlar üzerinden sorgulanır.
Arama teriminin dilini saptamak için, Rosette’nın ilgili API’ı kullanılır.
TF-IDF Değerlerinin Çıkarımı
31
Gereksinim:
Arama algoritmasının kişiselleştirilebilmesi amacıyla, arama sonuçlarına ait TF ve IDF
değerlerinin alınması
Problem:
Elasticsearch bu değerleri sadece açıklama (explain) modu açıkken veriyor.
Performanslı değil
Çözüm:
Elasticsearch Agent
Bytecode instrumentation ile Elasticsearch davranışı çalışma anında değiştirilerek
Gelecek Planları
32
Elasticsearch versiyonunu 1.5.2’den 2.x.y’ye yükseltme
Filtre yapısının değiştirilmesi
Elasticsearch Agent’ın 2.x.y’e uygun olarak, ya da Plugin olarak yeniden yazılması
Cluster optimizasyonları
Metin analizinde iyileştirmeler
Skor fonksiyonunda iyileştirmeler
33
Teşekkürler
Ad

More Related Content

What's hot (20)

Oracle application express ppt
Oracle application express pptOracle application express ppt
Oracle application express ppt
Abhinaw Kumar
 
Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginners
Neil Baker
 
Elasticsearch V/s Relational Database
Elasticsearch V/s Relational DatabaseElasticsearch V/s Relational Database
Elasticsearch V/s Relational Database
Richa Budhraja
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
Jaya Naresh Kovela
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
Fadel Chafai
 
Rest API
Rest APIRest API
Rest API
Rohana K Amarakoon
 
Neural Search Comes to Apache Solr
Neural Search Comes to Apache SolrNeural Search Comes to Apache Solr
Neural Search Comes to Apache Solr
Sease
 
Mongo DB
Mongo DBMongo DB
Mongo DB
Edureka!
 
ETL Testing Overview
ETL Testing OverviewETL Testing Overview
ETL Testing Overview
Chetan Gadodia
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
Aniruddh Bhilvare
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
DuraSpace
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
Ahmad Fatoni
 
Datalake Architecture
Datalake ArchitectureDatalake Architecture
Datalake Architecture
TechYugadi IT Solutions & Consulting
 
Ef code first
Ef code firstEf code first
Ef code first
ZealousysDev
 
TestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit TestingTestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit Testing
Bethmi Gunasekara
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
habib_786
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
Jurriaan Persyn
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
Jean-Philippe Chateau
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
Shahed Chowdhuri
 
Accessibility Testing using Axe
Accessibility Testing using AxeAccessibility Testing using Axe
Accessibility Testing using Axe
RapidValue
 
Oracle application express ppt
Oracle application express pptOracle application express ppt
Oracle application express ppt
Abhinaw Kumar
 
Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginners
Neil Baker
 
Elasticsearch V/s Relational Database
Elasticsearch V/s Relational DatabaseElasticsearch V/s Relational Database
Elasticsearch V/s Relational Database
Richa Budhraja
 
Introduction à ElasticSearch
Introduction à ElasticSearchIntroduction à ElasticSearch
Introduction à ElasticSearch
Fadel Chafai
 
Neural Search Comes to Apache Solr
Neural Search Comes to Apache SolrNeural Search Comes to Apache Solr
Neural Search Comes to Apache Solr
Sease
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
DuraSpace
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
Ahmad Fatoni
 
TestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit TestingTestNG - The Next Generation of Unit Testing
TestNG - The Next Generation of Unit Testing
Bethmi Gunasekara
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
habib_786
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
Jurriaan Persyn
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
Shahed Chowdhuri
 
Accessibility Testing using Axe
Accessibility Testing using AxeAccessibility Testing using Axe
Accessibility Testing using Axe
RapidValue
 

Viewers also liked (7)

Elastic search custom chinese analyzer
Elastic search custom chinese analyzerElastic search custom chinese analyzer
Elastic search custom chinese analyzer
LearningTech
 
Elasticsearch Arcihtecture & What's New in Version 5
Elasticsearch Arcihtecture & What's New in Version 5Elasticsearch Arcihtecture & What's New in Version 5
Elasticsearch Arcihtecture & What's New in Version 5
Burak TUNGUT
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
Olga Lavrentieva
 
I just hacked your app! - Marcos Placona - Codemotion Rome 2017
I just hacked your app! - Marcos Placona - Codemotion Rome 2017I just hacked your app! - Marcos Placona - Codemotion Rome 2017
I just hacked your app! - Marcos Placona - Codemotion Rome 2017
Codemotion
 
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Codemotion
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Oleksiy Panchenko
 
Data modeling for Elasticsearch
Data modeling for ElasticsearchData modeling for Elasticsearch
Data modeling for Elasticsearch
Florian Hopf
 
Elastic search custom chinese analyzer
Elastic search custom chinese analyzerElastic search custom chinese analyzer
Elastic search custom chinese analyzer
LearningTech
 
Elasticsearch Arcihtecture & What's New in Version 5
Elasticsearch Arcihtecture & What's New in Version 5Elasticsearch Arcihtecture & What's New in Version 5
Elasticsearch Arcihtecture & What's New in Version 5
Burak TUNGUT
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
Olga Lavrentieva
 
I just hacked your app! - Marcos Placona - Codemotion Rome 2017
I just hacked your app! - Marcos Placona - Codemotion Rome 2017I just hacked your app! - Marcos Placona - Codemotion Rome 2017
I just hacked your app! - Marcos Placona - Codemotion Rome 2017
Codemotion
 
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Full-Text Search Explained - Philipp Krenn - Codemotion Rome 2017
Codemotion
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Oleksiy Panchenko
 
Data modeling for Elasticsearch
Data modeling for ElasticsearchData modeling for Elasticsearch
Data modeling for Elasticsearch
Florian Hopf
 
Ad

Similar to Elasticsearch ve Udemy Kullanım Pratikleri (11)

Arama Sistemleri
Arama SistemleriArama Sistemleri
Arama Sistemleri
Murat Ilgaz
 
Windows 7 Search
Windows 7 SearchWindows 7 Search
Windows 7 Search
windowsblogu
 
İlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrineİlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrine
Muhittin Özer
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Anar Godjaev
 
CSharp Programlama Dili ve Net Framework
CSharp Programlama Dili ve Net FrameworkCSharp Programlama Dili ve Net Framework
CSharp Programlama Dili ve Net Framework
Cem Topkaya (MSc)
 
C# OOP
C# OOPC# OOP
C# OOP
Ünal Ün
 
Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9
Önder Değer
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
Önder Değer
 
Arama Sistemleri
Arama SistemleriArama Sistemleri
Arama Sistemleri
Murat Ilgaz
 
İlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrineİlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrine
Muhittin Özer
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Anar Godjaev
 
CSharp Programlama Dili ve Net Framework
CSharp Programlama Dili ve Net FrameworkCSharp Programlama Dili ve Net Framework
CSharp Programlama Dili ve Net Framework
Cem Topkaya (MSc)
 
Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9
Önder Değer
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
DP:900 Azure Data Fundamentals - Azure'da ilişkisel veriler-02
Önder Değer
 
Ad

Elasticsearch ve Udemy Kullanım Pratikleri

  • 1. 1 İbrahim TAŞYURT Elasticsearch ve Udemy Kullanım Pratikleri
  • 2. Ajanda 2 Udemy Elasticsearch ve Temel Arama Kavramları Udemy’de Elasticsearch kullanımı: İndeksleme Temel arama işlevleri Metin Analizi Çoklu dil desteği TF ve IDF değerlerinin çıkarımı
  • 3. Udemy 3 Video tabanlı Online Eğitim Platformu ve Pazaryeri +12 Milyon Aktif Kullanıcı 50 Bin Ders Web, Mobil ve AppleTV uygulamaları San Francisco, Ankara ve Dublin ofisleri Toplam 254 çalışan, 85+ Mühendis Udemy Türkiye Ofisi:
  • 4. Udemy (Discovery) 4 Amaç: Doğru kullanıcıyı doğru dersle buluşturmak Alt Takımlar Arama (Search) Öneri (Recommendation) Kanallar(Channel) Veri Bilimi (Data Science) destekli çalışmalar Kullanılan araçlardan bazıları:
  • 5. Elasticsearch 5 Arama Motoru ve İlişkisel Olmayan Veritabanı Java ile geliştirilmiş Açık Kaynaklı Apache Lucene tabanlı Dağıtık Hata dayanıklı(Fault tolerant) Ölçeklendirilebilir
  • 6. Apache Solr ile karşılaştırma 6 Ölçeklendirebilme avantajı İdame Kolaylığı Daha kullanışlı API
  • 7. Temel Elasticsearch (ES) Kavramları 7 Node: Her bir çalıştırılabilir ES sunucusu Cluster(Küme): Verinin dağıtık ve tutarlı şekilde tutulduğu Node grubu Index: Benzer karakterdeki verilerin(doküman) saklandığı yapı Document(Doküman): İndekslenebilen temel veri yapısı JSON Field(Alan): Dokümanın üstündeki alanlar Shard: Her bir indeksin içinde dokümanların bir kısmını tutan bölüm
  • 8. Örnek Cluster Yapısı 8 Örnek: 4 Node 2 Shard 1 Replica Herhangi bir Node devredışı kaldığında, cluster çalışmaya devam eder.
  • 9. Shard ve Replicalar 9 Shard: Her shard bir Lucene indeksidir. Sorgular her shard üzerinde çalıştıktan sonra, koordinatör node üzerinde birleştirilir (scatter/gather). Shard sayısı performans/ölçeklendirme üzerinde etkilidir. Replica: Hata dayanıklılığı Sorgu performansında iyileşme
  • 10. Temel Arama Kavramları 10 Relevance(İlgi): Bir aramanın, dokümanla örtüşmesi/benzerliği. Terim Frekansı(Term Frequency, TF): Bir terimin metinde geçme sıklığı Ters Doküman Frekansı(Inverse Document Frequency, IDF) Bir terimin ne kadar az dokümanda geçtiğinin ölçüsü Ayırdedicilik Score(Skor): İlginin numerik ifadesi
  • 11. Terim Frekansı(Örnek) 11 “Java Programlama ve Temel Programlama Mantığı” “Java Programlama ve Veri Madenciliği” “Programlama” aramasında, ilk doküman daha yüksek skora sahip olacaktır. Terim Java Programlama ve Temel Mantığı TF 1 2 1 1 1 Terim Java Programlama ve Veri Madenciliği TF 1 1 1 1 1
  • 12. Ters Doküman Frekansı (Örnek) 12 Senaryo: Veri setimiz 100 dokümandan oluşsun. Bunların 10’unda “Java”, 3’ünde “Elasticsearch” terimleri geçiyor olsun. “Elasticsearch” daha yüksek IDF değerine sahip(daha ayırt edici). Sonuç: “Java Elasticsearch” aramasında, “Elasticsearch” içeren dokümanlar daha yüksek skora sahip olur(arama sonuçlarında
  • 14. Udemy’de Elasticsearch 14 Versiyon 1.5.2 Canlı, Test ve Geliştirme Kümeleri 7 Node Çoklu shard ve replica’lar REST API ile erişim İstemci Kütüphaneleri: elasticdsl (Python) Spring Data (Java)
  • 15. Kullanılan Araçlar 15 HQ Plugin’i Cluster’ın izlenmesi ve basit yönetimi Datadog/New Relic Performansın ve kaynak kullanımının görüntülenmesi Sense Google Chrome Plugin’i Cluster’a REST istekleri gönderimi Elasticdump
  • 16. İndekslenen Dokümanlar 16 Dersler(Course) Kullanıcılar(User) Arama Kayıtları(Search Log) Kullanıcı Mesajları(Message Thread) Ders Tartışmaları (Course Discussion)
  • 17. İndeksleme 17 Dokümanlar veritabanından alınarak Elasticsearch’e indekslenir Gerçek Zamanlı İndeksleme: Verilerdeki değişiklikler uygulama üzerinden fark edilerek değişen dokümanlar gerçek zamanlı olarak indekslenir Periyodik İndeksleme: Bütün dokümanlar periyodik olarak Elasticsearch üzerinde güncellenirler Toplu(Bulk) olarak yapıldığı için gerçek zamanlı indekslemeye göre daha performanslıdır
  • 18. İndekslenen alanlar (Ders) 18 Ders sahibi(instructor) kaynaklı alanlar: Başlık, Altbaşlık, Ders Tanımı, Ders Veren(instructor) adı…. Dersin kalitesi/performansı ile alakalı alanlar: Öğrenci sayısı, Puan, Yorumlar, Kazanç, İzlenme miktarı…. Dersin ait olduğu kategori/alt başlık/koleksiyon bilgileri Dersin ücretine ilişkin bilgiler Ders ile alakalı etiketler(Tag) Manuel ve Algoritmik
  • 19. Temel Arama İşlevleri 19 Amaç: Aramaya uygun dokümanları(dersleri) bulmak Aramaya daha çok uyan dokümanların arama sonuçlarında yukarıda görünmesi Udemy Arama Sonuçları Uyarlanmış (Custom) bir fonksiyonla sıralanır Bileşenler: Kullanıcı kaynaklı alanlar
  • 20. Kullanıcı kaynaklı alanlar 20 Başlık, Altbaşlık, Ders verenin adı vs. Genel olarak TF-IDF hesaplamasına dayalı, uyarlanmış(custom) bir skor fonksiyonu kullanılır. Her alan farklı şekilde ağırlıklandırılır(boosting). Arama yapan kullanıcının dilindeki dersler daha yüksek skorlandırılır.
  • 21. Kalite/Performans kaynaklı alanlar 21 Dersin aldığı kullanıcı puanları,yorumlar, kazanç, izlenme vs. Her alan, uyarlanmış birer fonksiyon üzerinden, skora etki eder. Alanların ağırlıkları ve fonksiyonların parametreleri, geçmiş veriye bağlı olarak Makine Öğrenmesi yöntemleriyle belirlenir
  • 22. Filtreleme ve Gruplama 22 Kullanıcının arama sonuçlarını daraltmasını ve aradığı dersi daha kolay bulmasını sağlar Elasticsearch’ün filtre ve gruplama(aggregation) özellikleri kullanılır Filtre Alanları: Dil Seviye Ücret(Ücretli/Ücretsiz) Özellikler(Altyazı, Quiz, Kodlama Egzersizi)
  • 24. Sıralama 24 Kullanıcı arama sonuçlarını belli kriterlere göre sıralayabilir Kriterler: İlgi(varsayılan) Fiyat Puan Eklenme Tarihi Elasticsearch’ün sıralama(sort) işlevi ile yapılır
  • 25. Otomatik Tamamlama 25 Arama kutusunda, kullanıcının aramasını otomatik olarak tamamlamaya yardım eder. Kullanılan bilgiler: Ders başlığı Ders veren kullanıcı isimleri Önceki popüler arama kayıtları Burada, Elasticsearch’ün metin eşleştirme (text match) işlevleri kullanılır Prefix eşleşmesi
  • 26. Öneri (Bunu mu demek istediniz?) 26 Arama sonucuna uygun bir sonuç bulunamadığında alternatif öneriler için kullanılır. Elasticsearch’ün öneri(‘suggest’) işlevinden faydalanılır. Dokümanlarda yer alan daha sık görülen benzer sözcükler öneri olarak sunulur.
  • 27. Metin Analizi ve Temizlenmesi 27 Metinler çoğunlukla analiz ve temizleme işlemine ihtiyaç duyarlar: Dokümanlardaki alanlar Arama terimleri Bu amaçla Elasticsearch Analyzer’ları kullanılır. Her alan için ayrı bir Analyzer tanımlanabilir Analyzer işlevleri: Ayrıştırma(Tokenization): Metni parçalara(token) ayırma
  • 28. Udemy’de Metin Analizi 28 Desteklenen diller: İngilizce Japonca Kullanılan Analyzer’lar Elasticsearch üzerinde gelen standard Analyzer’lar Udemy tarafından geliştirilen ‘Udemy Analyzer’ Plugin Japonca ayrıştırmasını yapan ‘RBL Analyzer’
  • 29. Metin Analizi İşlemleri 29 Etkisiz sözcük ayrıştırılması ‘A Java Course for Beginners’ -> ‘Java’, ‘Course’ ,’Beginners’ Özel karakterler içeren sözcükler ‘C++’, ‘PL/SQL’ ASCII olmayan karakterlerin dönüşümleri ‘ÇAĞDAŞ’->’CAGDAS’,’ÇAĞDAŞ’ Eşanlamlı sözcüklerin işlenmesi ‘js’,’java script’, ‘javascript’-> ‘javascript’
  • 30. Çoklu dil desteği (Japonca) 30 Japonca olan doküman metinler, Japonca Analyzer’ı (RBL) kullanılarak ayrı alanlarda indekslenir. Japonca arama terimleri, bu alanlar üzerinden sorgulanır. Arama teriminin dilini saptamak için, Rosette’nın ilgili API’ı kullanılır.
  • 31. TF-IDF Değerlerinin Çıkarımı 31 Gereksinim: Arama algoritmasının kişiselleştirilebilmesi amacıyla, arama sonuçlarına ait TF ve IDF değerlerinin alınması Problem: Elasticsearch bu değerleri sadece açıklama (explain) modu açıkken veriyor. Performanslı değil Çözüm: Elasticsearch Agent Bytecode instrumentation ile Elasticsearch davranışı çalışma anında değiştirilerek
  • 32. Gelecek Planları 32 Elasticsearch versiyonunu 1.5.2’den 2.x.y’ye yükseltme Filtre yapısının değiştirilmesi Elasticsearch Agent’ın 2.x.y’e uygun olarak, ya da Plugin olarak yeniden yazılması Cluster optimizasyonları Metin analizinde iyileştirmeler Skor fonksiyonunda iyileştirmeler