tarafından eklendi tarafından eklendi

Centos 7 Üzerine Solr Kurulumu

Solr, efsane bir full-text search aracı. Daha önceki yazılarımda detaylarından bahsetmiştim. İnanılmaz hızlı sorgu dönüşleri sağlıyor. Hemen hemen her büyük proje de in-search için kullanıyor. (Netflix, Instagram, Duck Duck Go vb.). Elastic Search’e karşın benim favorim Solr. Yapılandırması zor gibi görünsede ayağa kaldırmak çok kolay. Bence en karmaşık kısmı yetkilendirme kısmı.

Hızlıca kurulum ile ilgili aşamalara geçelim;

İlk önce Java ihtiyacını giderilim.

sudo yum install lsof java-1.8.0-openjdk  java-1.8.0-openjdk-devel

LATEST_VER’i değişen son sürüme karşı kodda minimum değişlik yapılsın diye ekliyorum.

export LATEST_VER="8.0.0" 
curl -O https://www-eu.apache.org/dist/lucene/solr/${LATEST_VER}/solr-${LATEST_VER}.tgz

Solr paketi indi. Arşiven çıkaralım.

tar xvf solr-${LATEST_VER}.tgz

Güzelce kurulumu başlatalım.

cd solr-${LATEST_VER}/bin/
sudo ./install_solr_service.sh ~/solr-${LATEST_VER}.tgz
sudo systemctl enable solr

Süper artık Solr ayağa kalktı. Başlangıçta çalışacak.

http://ip:8983/solr

Bu adım çok önemli. Core oluşturuyoruz. Core bir nevi DB gibi düşünün.

sudo su - solr -c "/opt/solr/bin/solr create -c testcollection -n data_driven_schema_configs"
/var/solr/data

Bu dizinde solr core’ları saklanıyor. buraya security.json adında bir config dosyası bırakıyorum. Solr web ve Rest Api’ye bu dosya sayesinde erişim sağlayacağım.

{
"authentication":{ 
   "blockUnknown": true, 
   "class":"solr.BasicAuthPlugin",
   "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, 
   "realm":"My Solr users", 
   "forwardCredentials": false 
},
"authorization":{
   "class":"solr.RuleBasedAuthorizationPlugin",
   "permissions":[{"name":"security-edit",
      "role":"admin"}], 
   "user-role":{"solr":"admin"} 
}}

Default olarak kullanıcı solr, şifremiz ise SolrRocks. Şifre sha256(şifre+salt) şeklinde oluşturuluyor.

Öncelikle şunuda eklemeyi unutmayayım. In cloud yapısında ZooKeeper denen bir servis var. Bu kısım oldukça detaylı o kısmı geçip, standalone kurulum için bu ayarlar.

Her şey güzel. Ama henüz bitmedi. Solr’ın verileri Db’nizden çekip indekslemeyebilmesi için bir Data Import Handler oluşturmamız lazım.

/var/solr/data/Koleksiyon_Adi/conf/solrconfig.xml
 <lib dir="${solr.install.dir:../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
 <lib dir="${solr.install.dir:../..}/dist/" regex="mysql-connector-java-\d.*\.jar" />

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
            <str name="config">data-config.xml</str>
        </lst>
</requestHandler>
/opt/solr/server/lib

Klasörünün altına da bir mysql-connector-java-surum_no.jar indirip, jar olarak durmasını sağlamalıyız.

Sıra geldi verileri çekebilmemiz için gerekli veritabanı bağlantı ayar dosyasına.

nano data-config.xml
<dataConfig>
  <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1:3306/db_name"
              user="user"
              password="pass"
               />
  <document>
  <entity name="Veriler" query="select * from veriler order by sira desc">
    <field column="sutun_adi" name="sutun_adi"/>
    <field column="sutun_adi" name="sutun_adi"/>
    <field column="sutun_adi" name="sutun_adi"/>
    <field column="sutun_adi" name="sutun_adi"/>
    <field column="sutun_adi" name="sutun_adi"/>
  </entity>

</document>
</dataConfig>

Yukarıdaki şekilde dosyayı ekledikten sonra nihayet solr kurulumunu tamamlıyoruz demek isterdim :). Devam…

http://ip:8983/solr/#/koleksiyon_adi/schema

Buradan indekslemek için bir db solr tablosu oluşturacağız. Dikkat etmemiz gereken veri tipi ve buradaki field isminin, tanımladığımız data-config.xml deki alanlar ile uyuşması. Çünkü burada data mapping yapılacak.

Burada fieldlarımızı tanımladıktan sonra mutlu sona geldik. :).

Hadi verilerimizi çekelimde bitsin artık bu kurulum.

http://ip:8983/solr/#/koleksiyon_adi/dataimport/

Bu ekranda artık dbye bağlandığımız verileri çektiğimiz ekran.

Entity’i data-config.xml’de yazdığımız entity gelecek ve onu seçelim. Command full-import ‘u seçelim. Ayrıca anbean importing’i takip etmek için, auto-refresh status’te tikli olsun. Yukarıdaki gibi yeşil bir alert çıktığında işlem tamam.

Artık her şey tamam. Zevkle sorgulayabiliriz. 🙂

ttp://ip:8983/solr/#/koleksiyon_adi/query

fq kısmına field_Adi:kelime yazarak sorgulamamızı yapabiliriz. Query’in kendine has bir detayı var. Daha önce ki Solr yazımda buna değindiğim için bu yazıda anlatmayacağım. Bir o kadar kolay bir o kadar da zor Solr yazımın sonuna geldim.

İyi çalışmalar.