WordPress Notları

WordPress Haberleri,İpuçları,Eklentileri,Temaları ve dahası

  • Haberler
  • İpuçları
  • Nasıl Yapılır
  • Eklentiler
  • Temalar
  • Multisite
  • Güvenlik

16 Nisan 2015 tarihinde Mustafa Uysal yazdı Yorum yapın

WordPress ile Elasticsearch Kullanımı

fantastic-elasticsearch

Bu yazımızda WordPress aramalarıni Elasticsearch üzerinden nasıl gerçekleştirebileceğimizi anlatacağım.

 

Elasticsearch, full text arama sunan bir araçtır, java tabanlı çalışır, verileri json formatında tutar ve güzel bir rest api sunar.

WordPress’te arama yaptığımız zaman içerikler veritabanindan pahalı bir sorgu türü olan “LIKE” ile aranır, “like” lı sorguların dezavantajı, siteniz büyüdükçe veritabanı üzerindeki yük artacaktır, diğer taraftan isabetli sonuç bulma olasılıği Elasticsearch’e göre daha zayıftır. İşte bu sebeplerden ötürü arama işlerini Elasticsearch’e devretmek özellikle ziyaretçisi yada içerik sayısı fazla olan sitelerde mantıklı olacaktır.

 

Gelelim Kurulumuna;


### Install OpenJDK
cd ~
sudo apt-get update
sudo apt-get install openjdk-7-jre-headless -y
### Download and Install ElasticSearch
### Check http://www.elasticsearch.org/download/ for latest version of ElasticSearch and replace wget link below
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.5.1.deb
sudo dpkg -i elasticsearch-1.5.1.deb
### Install the Java Service Wrapper for ElasticSearch
curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mkdir /usr/local/share/elasticsearch
sudo mkdir /usr/local/share/elasticsearch/bin
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch
### Start ElasticSearch
sudo service elasticsearch start
### Make sure service is running
curl http://localhost:9200
### Should return something like this:
#{
# "status" : 200,
# "name" : "Storm",
# "version" : {
# "number" : "1.3.1",
# "build_hash" : "2de6dc5268c32fb49b205233c138d93aaf772015",
# "build_timestamp" : "2014-07-28T14:45:15Z",
# "build_snapshot" : false,
# "lucene_version" : "4.9"
# },
# "tagline" : "You Know, for Search"
#}

view raw

ElasticSearch.sh

hosted with ❤ by GitHub

Bu gist’teki adımları Ubuntu/ Debian tabanlı işletim sisteminde gerçekleştirirseniz, hem Elasticsearch’ü kurmuş hemde, servis olarak tanımlamış olacaksınız. (Yani “service elasticsearch {start|stop|status…}” şeklinde kullanabileceksiniz)

 

WordPress Tarafındaki İşler

Elasticsearch’ü kurduk, servisi ayağa kaldırdık sıra geldi WordPress ile Elasticsearch’ü konuşturmaya.

Elasticsearh’ün sitesinde önerdiği eklenti şu anki WordPress versiyonlarıyla pek uyumlu değil, o yüden o tavsiyeye kulak asmıyoruz ve “Fantastic ElasticSearch” eklentisini indirip kuruyor, ve ardından aktifleştiriyoruz.

Sıra geldi eklentiyi yapılandırmaya;

elasticsearch-wp

WordPress Integration Bu adımında hangi arşiv sayfalarında ve yazı türünde kullanacağımızı seçip, entegrasyon durumunu aktif/pasif yapabiliyoruz.

server-settings

Server Settings: Bu adımda sunucu adresi, index adı ve okuma/yazma zaman aşımı değerlerini belirlememiz gerekiyor.

Index oluşturmak için terminalden

curl -XPUT ‘http://localhost:9200/wp/’

komutunu çalıştırmanız yeterli olacaktır. (“wp” yerine farkli bir index adı verebilirsiniz tabii)

 

content-indexing

Content Indexing: Bu adımda nelerin indexleneceğini seçiyoruz.

field-mapping

Field mapping: Indexlenecek değerlerin numeric olup olmadığını işaretleyebilir, arama kelimesiyle bire bir eşleşme istiyorsak “non analyzed field” olarak işaretleyebiliriz. (Ben hiç birşey seçmedim bu adımda)

fuzzy-wp-elastic

Result Scoring: Burada tölerans değerini belirliyoruz, örnegin “Ahmet” yerine “Ahmat” yazan biri de “Ahmet” eşleşmesini bulabilmesi için. Buradaki her kabul ettiğimiz hatalı giriş için “Fuzziness Amount” u artırmamız gerekmektedir. Onun altındaki değerlerde hangi field’da ne kadar sapmaya izin verdiğimizi belirlememizi sağlıyor.

(Daha kesin sonuçlar için bu değerleri düşük tutmanızda fayda var)

index-ops-elastic

Manage Index: Bu kısımda zaten iki seçenek var, “wipe data” ile indexin içini boşaltabilir, “re-index data” ile indexleme işlemini baştan gerçekleştirebilirsiniz.

 

Artik WordPress tarafında da işleri bitirdiğimize göre re-index data ile indexleme işlemini başlatabiliriz.

Gelelim eklentinin sunduğu diğer özelliklere;

  • Elasticsearch sunucusunda problem çıkması durumunda WordPress’in varsayılan arama özelliğine geri dönüyor.
  • Yeni içerik eklendiğinde, güncellendiğinde veya silindiğinde index’i güncelliyor.
  • Custom search için faceting adında bir api sunuyor.

 

Tüm işlem bu kadar 🙂 Umarım faydalı olmuştur.

 

Bunu paylaş:

  • Tweet
  • Daha fazla
  • Tumblr' da Paylaş
  • E-posta

İlgili

Kategori:Nasıl Yapılır Etiketler: elasticsearch, wordpress elasticsearch, wordpress ve elasticsearch, wordpresste elasticsearch

Hakkımda Mustafa Uysal

WPNotları'nın kurucu editörü. WordPress üzerine yazar, çizer arada katkı yapar.

Bir cevap yazın Cevabı iptal et

Lütfen gerçek bilgilerinizi kullanın. Herhangi bir site adı ile yazılan yorumlar onaylanmayacaktır!

Popüler Yazılar & Sayfalar

  • WordPress Multisite Kurulumu
    WordPress Multisite Kurulumu
  • WordPress Temalara Menü Desteği
    WordPress Temalara Menü Desteği
  • JavaScript Dosyalarınız İçin Ücretsiz CDN
    JavaScript Dosyalarınız İçin Ücretsiz CDN
  • Contact Form 7 İle SMTP E-Posta Gönderme
    Contact Form 7 İle SMTP E-Posta Gönderme
  • WordPress REST API Özelliğini Kapatmak
    WordPress REST API Özelliğini Kapatmak

Bloga e-posta ile abone ol

Bu bloga abone olmak ve e-posta ile bildirimler almak için e-posta adresinizi girin.

Blogroll

  • HandyPlugins
  • Powered Cache
  • WPHandle
  • Hakkımızda
  • İletişmeyin!
  • Bülten Gönder
  • Site Haritası
  • Gizlilik Politikası

© 2023 - WPNotlari

Bu internet sitesinde, kullanıcı deneyimini geliştirmek ve internet sitesinin verimli çalışmasını sağlamak amacıyla çerezler kullanılmaktadır. TamamGizlilik politikası