Bilgi XenForo Enhanced Search ve Elastic Search Modülü Kurulumu

Bilgi XenForo Enhanced Search ve Elastic Search Modülü Kurulumu
7
3K
5.00 Oylama
1 Değerlendirme - Raters
Merhaba arkadaşlar,
Daha önceleri "Enhanced Search" için bazı arkadaşlarla kısa değerlendirmelerimiz olmuştu.


Ama genel olarak baktığımızda bu modül nedir nasıl kurulur veya gereksinimleri hakkında detaylı bir makale yer almıyor. Bizde bu konuda yer alan eksikliği kısaca kapatabilmek adına deneyimlerimizi sizlerle paylaşmış olacağız.
Eksiklerimiz olursa kullanan arkadaşlarımız lütfen bizleri düzeltsin, geri bildirimlerini bu konuya ilave etsin.

Elasticsearch Nedir?

Büyük verileri (Big Data) doğru bir şekilde saklayıp, analiz edebilmek için öncelikle ihtiyaçlarımızı iyi görebilmemiz gerekir.
Eğer büyük veri blokları arasında metin arama (full text search) gibi bir ihtiyacımız varsa, bu durumda Elasticsearch bizim için en doğru tercih olabilir.
Elasticsearch; text üzerinden doğrudan arama yapmak yerine, indexler üzerinden arama yapar ve çok hızlı bir şekilde sonuçlar üretir.

Bunun yanında sorgular üzerinde istatiksel analizler , skorlamalar da yapabilir.
Elasticsearch, Lucene üzerine inşa edilmiştir ve Lucene özelliklerine atıfta bulunmak için JSON tabanlı bir REST API sağlar.
Şimdi bazı kullanıcılarımız Lucene'nin ne olduğunu bizlere sorabilir bunu da kısaca irdeleyeceğiz.

Lucene bir arama motoru kitaplığıdır . Kendi arama motorunuzu oluşturmak için kullanmak istersiniz: ya yeni bir Elasticsearch ya da Solr rakibi ya da kullanım durumunuz için dar bir şey (örneğin, metin analizi).

Elasticsearch bir arama motorudur . Çoğu kişi bunu günlük toplama, ürün arama veya bu ikisinin bir çeşidi için kullanır (örneğin, sosyal medya analizi veya bazı arama kriterleri için ilgili kişileri bulmak). Lucene üzerine inşa edilmiştir, bu nedenle özelliklerinin çoğunu (hepsini olmasa da) ortaya çıkarır . Ayrıca en önemlisi, üstüne çok şey ekler:
  • REST API
  • DSL sorgusu
  • dağıtılmış sistem (parçalama, çoğaltma, küme yönetimi)
  • yönler / toplamalar
  • ortak kullanım (örn. besleme işleme) ve yönetim için ek özellikler ( ilgili ölçümleri izleme , yedekleme ve geri yükleme, vb. için API'ler )

Elasticsearch Altyapısı

Elasticsearch tamamen Java dilinde yazılmış, dağıtık mimariye sahip, açık kaynak kodlu bir projedir. Arama altyapısı, arama motoru konularına ilgi duyanların adını duymuş olabilecekleri Apache Lucene projesini temel almaktadır. Lucene projesi daha çok unstructured dediğimiz düz metinlerin indexlenmesi ve aranmasını sağlamaktadır. Elasticsearch ise Lucene altyapısının üzerine structured dediğimiz veri yapısı belli dokümanların indexlenmesi ve aranabilmesini sağlamaktadır. Temel olarak Elasticsearch üzerinde tutulan her doküman bir JSON nesnesidir ve o dokümanı diğer dokümanlardan ayıran tekil (unique) bir idsi olmalıdır.

Elasticsearch'ten Beklenti Nedir?


Öncelikle en önemli özelliği olarak elasticsearch frameworkunun çok ama çok hızlı olduğunu söyleyebiliriz. Temel olarak bir relational database sisteminin tutabileceği tüm verileri tutabildiği gibi bu verileri bir veritabanı sisteminden çok ama çok daha hızlı bir şekilde sorgulamanıza izin vermektedir. Bu hızı sağlayabilmek için sayısal değerleri, coğrafi değerleri, tarih ve metinleri tutabilecek özel index yapıları kullanmaktadır.

Ama kullanıcı olarak bu teknik detayları bilmenize hiç gerek yoktur. Temel olarak milyonlarca hatta trilyonlarca satırdan oluşan verilerinizi elasticsearche JSON formatında atarsınız ve doğru konfigürasyon ve kullanımı oldukça kolay olan

Elasticsearch Modülünü Genel özellikleri İle İnceleyelim;

  • Java tabanlıdır.
  • Apache Lucene alt yapılıdır. (Shared ve Replica kavramları ES’te de aynen geçerlidir.)
  • Açık kaynaktır.
  • Veri saklama biçimi ilişkisel değil document-oriented şeklindedir.
  • Dağıtık ve ölçeklenebilir yapıda çalışabilir.
  • Gerçek zamanlı verileri analiz etmeyi sağlar.
  • Type, Fields, Documents, Fields, Indicates, Full-text search, Index gibi kavramlara sahiptir(Aşağıda açıklamalarınu göreceksiniz.)
  • RestfullAPI üzerinden hizmet verdiğinden dolayı tüm programlama dilleriyle kullanılabilir.
  • Veri tipine uygun biçimde otomatik Mapping yapabilir.
  • Cluster yapıya sahiptir ve cluster yapısı oldukça basittir.
  • Elasticsearch’ü monitör edebilen Kibana ve log barındırmak için Logstash araçları ile bilirkte kullanılabilir.
  • Kendi içinde yüksek erişilebilirlik (high availability) sunar.
  • Dökümanları JSON olarak indexler.
  • Hızlı kurulum ve kolay konfigürayon vadeder.
  • Elasticsearch’e veri aktarmak oldukça kolaydır. (Veri aktarımı için River gibi yapıları mevcuttur.)
  • HBase, Cassandra, MongoDB gibi NOSQL veritabanlarından da ES’e aktarım yapmayı mümkün kılar.

Elasticsearch Bileşenlerine ve Temel Prensiplerine Değinelim;

Indice
Yukarıda görüldüğü üzerine klasik ilişkisel veritabanlarında Database’lerin yerine Elasticsearch’te Indice kavramları kullanılmakta.
Bir Elasticsearch Cluster’ı birden fazla indices(veritabanları) bulundurabilir.

Type
İlişkisel veritabanlarındaki tablolar için ES “Type” kavramını kullanır. Bir indice, birden fazla type(tablo) barındırabilir.

Document
Elasticsearch’te, ilişkisel veritabanlarındaki Rows (satılar), Documents (Dökümanlar) olarak temsil edilirler. Her type, birden fazla document’a sahiptir.

Field
Klasik veritabanlarındaki Column’lar, Elasticsearch’te Field(Alan/kolon) olarak nitelendirilir. Her document bir den fazla fileld’a sahiptir.

Full-text search (Tam metin arama)
Herhangi bir kaynaktan alınan metin belgeleri içinden, herhangi bir anahtar kelimenin aratılarak, anahtar kelime ile eşleşen dökümanların bulduğu sonuca hızlı şekilde erişime verilen isimdir.

Örneğin, wikipedia.com‘da bir bilim adamının ismini aratıp bununla ilgili yazılan yazıları okuyacağınızı varsayalım.
Wikipedia’nın arama çubuğuna Nicola Tesla yazdığınızda onunla ilgili yazıları bulmak için kayıtlı tüm yazılarda arama yapmak yerine, önceden indekslenmiş veriler içinden Nikola Tesla’nın adının geçtiği metinlerin olduğu index’e hemen gidip hızlıca size sonuç döndürmeyi sağlayan yapıdır.

Index
Elasticsearch’e eklenen her kayıt JSON belgesi olarak yapılandırılır. Yani, dökümanlarınızın içindeki her bir kelime(terim) için hangi döküman yada dökümanlarda o kelimenin olduğu bilgisini tutan bir endeksleme sistemi vardır. Bir nevi veritabanı gibi düşünebilirsin. Veritabanındaki verilerde olan düzen gibi, Elasticsearch’ün indexleri de JSON formatı şeklinde düzenlidir.

Mapping
Verileri indexlerken bu verilerin hangi tipte olduğunu göstermemiz gerekir. Yani bir kelimeyi indexlerken o kelimenin hangi veri tipinde(string, integer, boolean) olduğu bilgisinin tanımlandığı işlemdir.
Bu, milyonlarca içerik parçasıyla bile mükemmel performans sağlar. Elasticsearch, aramaların birden çok sunucuda sessizce yürütülmesine izin vererek neredeyse sonsuz ölçeklenebilirliğe ve yedeklliiğe izin verir.

Ek olarak, neredeyse tüm aramaların anlamlı sonuçlar döndürmesine olanak tanıyan çok küçük bir engellenecek kelime listesinden ve minimum kelime uzunluğundan faydalanırsınız. Elasticsearch, aramanızla ne kadar alakalı olduklarına bağlı olarak sonuçları döndürmek için de destek sağlar. Gelişmiş arama sayfasında alaka düzeyini seçebilirsiniz.

XenForo Enhanced Search Nedir? Ne işe Yarar?

XenForo Gelişmiş Arama, kullanıcılarınıza önemli ölçüde daha iyi arama performansı ve ek arama seçenekleri sunmak için tasarlanmıştır.
Kısaca sonuca odaklanıp yazacak olursak Lucene'nin üzerine inşa edilen elasticsearch'ten yararlanmak için inşa edilmiş resmi bir XenForo eklentisidir.

Enhanced Search
, milyonlarca içerik parçasıyla bile mükemmel performans sağlar. Elasticsearch, aramaların birden çok sunucuda sessizce yürütülmesine izin vererek neredeyse sonsuz ölçeklenebilirliğe ve yedekliliğe izin verir.
Ek olarak, neredeyse tüm aramaların anlamlı sonuçlar döndürmesine olanak tanıyan çok küçük bir engellenecek kelime listesinden ve minimum kelime uzunluğundan faydalanırsınız.

Elasticsearch, aramanızla ne kadar alakalı olduklarına bağlı olarak sonuçları yansıtmak için de destek ve duyarlılık sağlar.

Gelişmiş arama için genel seçenek sayfasında sonuçları ilişkilendirme-alaka düzeyini seçebilirsiniz.
Bir kaç ekran görüntüsü ekleyecek olursak,

Search_Options.png

Index_configuration.png


Yukarıda bir çok detaylı bilgiyi sizlere sunduktan sonra sanırım gelişmiş aramanın XenForo üzerinde bizlere neler sunacağına dair aklımızda çok fazla soru kalmamıştır.

Kısaca Xenforo tabanlı bir forum sistemini kullanıyorsanız,

  • Hızlı arama,
  • Arama duyarlılığı ile tam eşleşen içerikler gösterilmesi,
  • Benzer konuların hızlı cevap editörünün altında listelenmesini
  • Yeni içerik oluştururken benzer içeriklerin görüntülenmesini
Enhanced Search eklentisi ile sağlayabilirsiniz.

Eklenti kurulumu oldukça basit ve diğer resmi eklentilerde olduğu gibi arşivden yükleme seçeneği sayesinde kolayca kurulum yapabilirsniz. Bu noktada önemli olan detay Enhanced Search kurulumu yapılacak sunucu da,
Elastic Search'ün
aktif olmasıdır. Size tavsiyemiz "Elastic Search Modülü" XenForo Gelişmiş Arama kurulumu öncesi sunucuda doğru şekilde yapılandırmış olmanızdır.

Elastic Search Modülü Kurulumu

Bu işlem öncesinde lütfen sunucunuzun tam yedeğini alın, sizlere örnek olması açısından "Centos 7" için Elastic Search Kurulumu'nu detaylı şekilde anlatmış olacağız,

Modüllerin güncel şekilde eklenmesini sağlamak adına,

Öncelikle Sunucunuzu Güncelleyin:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Bu işlemin ardından Elastic Search için gerekli GPG-KEY anahtarını import edelim,

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Yukarıda yer alan adım sonrasında,

Nano ile /etc/yum.repos.d/elastic-7.x.repo dosyası oluşturup, bu dosya içerisine aşağıda yer alan kodları yazın ve kaydedin.

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Bu adımın tamamlanması ile birlikte kurulum adımı ile devam ediyoruz,
Aşağıda yer alan kodlar ile elasticsearch modülünü kuruluyoruz.

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Modülümüz hazır ve yükleme tamamlandı ise artık onu çalıştırabiliriz.

Elastic Search Eklentisi'ne start vermek adına aşağıda yer alan kodu çalıştırın,

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Gelişmiş aramanın otomatik başlamasını istiyorsanız aşağıdaki kodları çalıştırın,

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Güvenlik Duvarı ve Elastic Search

Elasticsearch Veritabanı Güvenlik Duvarı, kullanıcılar ve bir veritabanı arasında aracı görevi görür. Bu araç, gelen ve giden veritabanı trafiğini tarar ve filtreler.
Şüpheli veya yasak işlemleri ve sorguları gerçek zamanlı olarak engelleyebilir. Elasticsearch veritabanları, izinsiz giriş girişimlerine, kötü niyetli saldırılara, SQL enjeksiyonlarına ve içeriden gelen risklere karşı güvenli bir şekilde korunur.

Derin trafik analizi ve filtreleme yaparak maksimum düzeyde veri güvenliği sağlar. Tüm gelen ve giden veritabanı trafiği, güvenlik kurallarına uygunluk açısından analiz edilir. Sorgu bir güvenlik kuralıyla eşleşirse, hemen engellenir, bu sorguyu yapan istemci uygulamanın veri tabanından bağlantısı kesilir veya oturum sonlandırılır.

Tüm bunların yanında kendine özgü ek bir port iznini sizden kurulum sürecinde isteyebilir,
Eğer bir güvenlik duvarı kullanıyorsanız 9200 portuna izin vermelisiniz.

Bu işlem içinde yukarıda anlatılan kurulum adımlarından sonra aşağıda yer alan kodu çalıştırın,

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

KURULUM SONRASI BÜYÜK BOYUTLU INDEX NEDENİ İLE HATA ALINIRSA

XenForo Enhanced Search ve Elastic Search Modülü Kurulumu tamamlandınız Admin panele giriş yaparak XenForo seçeneklerinden yeni yapılandırma alanına geldiğinizde indexlerinizi yapılandır dediğinizde işlem yarıda kalıyor ve hata gönderimi gerçekleştiriyorsa aynı sayfada kalıp Aşağıda yer alan kodu SSH ile çalıştırmanız ve sayfayı yenilemeniz yeterli olacaktır.

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Genel olarak bulabildiğimiz bazı kaynaklar ve deneyimlerimiz ile XenForo Enhanced Search ve Elastic Search Modülü Kurulumu'nu size aktarmaya çalıştık.
Bu konuda sizin de yaşamış olduğunuz deneyimlerinizi aktarmanız hepimiz adına fayda sağlayacaktır.

Destekleri için tüm kullanıcılarımıza, arkadaşlarımıza şimdiden teşekkürler.
Saygılar.
 
Bilgi Kaynak Erişimi
https://xentr.net/
Kardeşim ellerine sağlık. Bu tarzda makaleleri hazırlamak buram buram emek ve işçilik istiyor. Tebrik ederim harika bir makale olmuş. ;)
 
Çok detaylı bir anlatım olmuş. Bir çok kullanıcının ES ile ilgili fikri olmadığına şahit olmuştum. Tabi bu biraz da ihtiyaç meselesi, bilgi sahibi olmayan kullanıcıların henüz ihtiyaçları da olmamasından kaynaklanıyordur sanırım.
Büyüyen platformların bu kaynaktan istifade edeceğinden şüphem yok. :cool:

Bu güzel makale için teşekkürler. (y):coffee:
 
Great topic I liked it.
 
teşekkür ederim anlatım için (y)
 
Kardeşim valla anlatım inanılmaz sade ve şu anda tam ihtiyacım olan bir husus.
Sadece bilgisizliğimden dolayı, örnek olarak aşağıya eklediğim gibi olan kodları sunucu da nereden çalıştırıyoruz?
yum update
yum upgrade

Teşekkürler
 
Kardeşim valla anlatım inanılmaz sade ve şu anda tam ihtiyacım olan bir husus.
Sadece bilgisizliğimden dolayı, örnek olarak aşağıya eklediğim gibi olan kodları sunucu da nereden çalıştırıyoruz?
yum update
yum upgrade

Teşekkürler

Yum “Yellowdog Updater Modified” kısaltmasıdır. RPM Tabanlı bir paket yöneticisidir. yum xxx İşleme almak istediğiniz paketlerin süreçlerini başlatır (Örneğin yükleme veya güncelleme gibi) bu işlemlerin gerçkelştirilebilmesi için Putty üzerinden SSH komutları ile root hesabınızla giriş yaparak sağlayabilirsiniz.
Bu arada büyük boyutlu index kaydı nedeni ile sende kurulum sonrasında yaşadığımız sorunun çözümüne yönelik uyguladığımız işlem komutlarını da konuya gün içeriisnde ekleyeceğim.
 
Muhteşem bir iş ve destek için teşekkürler kardeşim.
 
Quick Jump
2,620Konular
12,449Mesajlar
1,428Kullanıcılar
Geri
Üst