Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 7839|Yanıt: 0

Arama motoru seçimi: Elasticsearch vs Solr

[Bağlantıyı kopyala]
Yayınlandı 11.12.2018 13:42:36 | | | |
Arama motoru seçimi araştırma belgesi

Elasticsearch'e Giriş*


Elasticsearch, gerçek zamanlı dağıtık bir arama ve analiz motorudur. Büyük ölçekli verileri her zamankinden daha hızlı işlemenize yardımcı oluyor.

Tam metin arama, yapılandırılmış arama ve analitik için kullanılabilir ve tabii ki, üçünü de birleştirebilirsiniz.

Elasticsearch, günümüzde mevcut olan en gelişmiş ve verimli tam özelliklere sahip açık kaynak arama motoru çerçevesi olarak adlandırılabilecek tam metin Apache Lucene™ üzerine inşa edilmiş bir arama motorudur.

Ama Lucene sadece bir çerçevedir ve özelliklerinden tam anlamıyla yararlanmak için JAVA kullanıp Lucene'yi programınıza entegre etmeniz gerekir. Nasıl çalıştığını anlamak çok şey öğrenmek zor ve Lucene gerçekten karmaşık.

Elasticsearch, Lucene'yi dahili motor olarak kullanır, ancak tam metin arama için kullanıldığında, karmaşık Lucene işletim ilkelerini anlamadan sadece birleşik bir API kullanmanız yeterlidir.

Elbette, Elasticsearch sadece Lucene kadar basit değil, sadece tam metin arama fonksiyonlarını içermekle kalmaz, aynı zamanda aşağıdaki görevleri de yerine getirebilir:

  • Dağıtık gerçek zamanlı dosya depolama ve her alanı inceleyerek aranmasını sağlıyor.
  • Gerçek zamanlı analitiklere sahip dağıtık arama motoru.
  • Petabaytlarca yapılandırılmış veya yapılandırılmamış veriyi işlemek için yüzlerce sunucuya ölçeklenebilir.

Tek bir sunucuya entegre edilen bu kadar çok özellikle, istemci veya tercih ettiğiniz herhangi bir programlama diliyle ES'in RESTful API'si ile kolayca iletişim kurabilirsiniz.

Elasticsearch ile başlamak çok basit. Birçok çok makul varsayılan ile geliyor, bu da yeni başlayanlar için karmaşık teorilerle uğraşmak zorunda kalmaz iyi bir yol haline getiriyor.

Kurulu ve kullanıma hazır, küçük bir öğrenme maliyetiyle çok verimli olabilir.

Daha fazla bilgi edindikçe, Elasticsearch'in daha gelişmiş özelliklerinden de faydalanabilirsiniz ve tüm motor esnek şekilde yapılandırılabilir. Kendi Elasticsearch'inizi kendi ihtiyaçlarınıza göre özelleştirebilirsiniz.

Kullanım Durumları:

  • Wikipedia, tam metin aramaları yapmak ve anahtar kelimeleri vurgulamak için Elasticsearch'i kullanır; ayrıca yazdığınız gibi arama önerileri ve arama-istediğiniz gibi önerileri de vardır.
  • The Guardian, ziyaretçi kayıtlarını işlemek için Elasticsearch kullanıyor; böylece editörler farklı makalelere yönelik kamuoyu tepkilerinden gerçek zamanlı olarak haberdar edilebiliyor.
  • StackOverflow, tam metin aramayı coğrafi konumlandırma ve ilgili bilgilerle birleştirerek daha benzer sorularla ilgili soruların temsili sağlar.
  • GitHub, Elasticsearch kullanarak 130 milyardan fazla satır kod alıyor.
  • Goldman Sachs her gün 5TB veriyi indekslemek için kullanıyor ve birçok yatırım bankası borsa hareketlerini analiz etmek için kullanıyor.

Ancak Elasticsearch sadece büyük işletmeler için değil, DataDog ve Klout gibi birçok girişimin yeteneklerini genişletmesine de yardımcı oldu.

Elasticsearch'in artıları ve eksileri**:

liyakat

  • Elasticsearch dağıtılmıştır. Başka bir bileşen gerekmez ve dağıtım gerçek zamanlıdır, bu da "Push replikasyonu" olarak bilinir.
  • Elasticsearch, Apache Lucene ile neredeyse gerçek zamanlı arama yapmayı tamamen destekliyor.
  • Çok kiralı kullanımı özel bir yapılandırma gerektirmezken, Solr daha gelişmiş ayarlar gerektirir.
  • Elasticsearch, yedeklemeyi kolaylaştırmak için Gateway kavramını kullanıyor.
  • Her düğüm eşit bir ağ yapısı oluşturur ve bazı düğümler arızalandığında, diğer düğümler otomatik olarak onların yerine atanır.


Eksiklik

  • Sadece bir geliştirici var (mevcut Elasticsearch GitHub organizasyonu bundan daha fazla, zaten oldukça aktif koruyucuları var)
  • Yeterince otomatik değil (mevcut yeni Index Warmup API için uygun değil)


Solr* hakkında

Solr ("güneş enerjisi" olarak telaffuz edilir), Apache Lucene projesi için açık kaynaklı bir kurumsal arama platformudur. Ana özellikleri arasında tam metin arama, hedef işaretleme, yüzeyli arama, dinamik kümeleme, veritabanı entegrasyonu ve zengin metin (örneğin, Word, PDF) işleme yer alır. Solr oldukça ölçeklenebilirdir ve dağıtık arama ile indeks çoğaltımı sağlar. Solr, en popüler kurumsal düzeyde arama motorudur ve Solr4 ayrıca NoSQL desteği de ekler.

Solr, Java ile yazılmış bağımsız, tam metin bir arama sunucusudur ve Apache Tomcat veya Jetty gibi bir servlet konteynerinde çalışır. Solr, tam metin indeksleme ve arama için Lucene Java arama kütüphanesini çekirdek olarak kullanır ve REST benzeri HTTP/XML ile JSON API'lerine sahiptir. Solr'un güçlü harici yapılandırma yetenekleri, Java kodlaması olmadan birçok uygulama türüne kolayca uyum sağlamayı sağlar. Solr, daha gelişmiş özelleştirmeyi desteklemek için bir eklenti mimarisine sahip.

2010'da Apache Lucene ve Apache Solr projelerinin birleşmesi nedeniyle, iki proje aynı Apache Software Foundation geliştirme ekibi tarafından oluşturuldu ve uygulandı. Teknoloji veya ürünler söz konusu olduğunda, Lucene/Solr ya da Solr/Lucene aynıdır.

Solr'un artıları ve eksileri:

liyakat

  • Solr'un daha büyük ve olgun bir kullanıcı, geliştirici ve katkıda bulunan topluluğu var.
  • HTML, PDF, Microsoft Office yazılım formatları gibi birden fazla formatta ve JSON, XML, CSV gibi düz metin formatlarında indeks eklemeyi destekler.
  • Solr nispeten olgun ve stabildir.
  • Indeksleme sırasında arama yapılmıyor ve hız daha hızlıdır.


Eksiklik

  • Endeks oluşturulduğunda, arama verimliliği düşer ve gerçek zamanlı indeks arama verimliliği yüksek değildir.


Elasticsearch vs Solr*

Solr, mevcut verileri aradığında daha hızlı.




Gerçek zamanlı indeksleme sırasında Solr, IO bloklamasına ve kötü sorgu performansına neden olur; bu da Elasticsearch'in açık bir avantajına sahiptir.



Veri miktarı arttıkça Solr'un arama verimliliği düşerken, Elasticsearch önemli ölçüde değişmez.



Özetle, Solr'un mimarisi gerçek zamanlı arama uygulamaları için uygun değildir.

Gerçek dünya üretim testleri*

Aşağıdaki şekil, Solr'dan Elasticsearch'e geçtikten sonra ortalama sorgu hızında 50 kat artışı göstermektedir.




Elasticsearch ile Solr karşılaştırmasının özeti

  • İkisi de kurulumu kolay;
  • Solr, dağıtık yönetim için Zookeeper'dan yararlanırken, Elasticsearch kendisi dağıtık orkestrasyon yönetimine sahiptir;
  • Solr daha fazla veri formatını desteklerken, Elasticsearch yalnızca JSON dosya formatlarını destekler;
  • Solr resmi olarak daha fazla özellik sunarken, Elasticsearch kendisi daha çok temel fonksiyonlara odaklanıyor ve gelişmiş fonksiyonlar çoğunlukla üçüncü parti eklentiler tarafından sağlanıyor.
  • Solr, geleneksel arama uygulamalarında Elasticsearch'ten daha iyi performans gösterir, ancak gerçek zamanlı arama uygulamalarını yönetirken Elasticsearch'ten önemli ölçüde daha az verimlidir.
  • Solr, geleneksel arama uygulamaları için güçlü bir çözümdür, ancak Elasticsearch ortaya çıkan gerçek zamanlı arama uygulamaları için daha uygundur.


Diğer Lucene tabanlı açık kaynak arama motoru çözümleri*


1: Lucene'i doğrudan kullanın

Not: Lucene, kendi başına tam bir çözüm olmayan ve ek geliştirme çabası gerektiren bir JAVA arama kütüphanesidir.

Avantajlar: Birçok başarılı vakaya sahip olgun çözüm. Hızla ilerlemeye devam eden Apache üst düzey projeleri. Büyük ve aktif bir geliştirme topluluğu, çok sayıda geliştirici. Bu sadece bir sınıf kütüphanesidir, özelleştirme ve optimizasyon için yeterli alanı vardır: basit özelleştirmeden sonra en yaygın ihtiyaçları karşılayabilir; 1 milyar+ aramayı desteklemek üzere optimize edildi.

Eksileri: Ek geliştirme çabası gerektirir. Tüm ölçeklendirme, dağıtım, güvenilirlik vb. kendi başınıza uygulanmalıdır; Gerçek zamanlı olmayan durumlarda, indeksleme ile arama arasında bir zaman gecikmesi vardır ve mevcut "Lucene Near Real Time arama" arama şemasının ölçeklenebilirliği daha da geliştirilmelidir

Bağlantı girişi görünür.

2:Katta

Not: Lucene tabanlı program, dağıtık, ölçeklenebilir, hata toleranslı, neredeyse gerçek zamanlı arama şemasını destekler.

Artılar: Hadoop ile kutudan çıktığı gibi dağıtıldı. Ölçeklendirme ve hata toleransı mekanizması vardır.

Dezavantajlar: Bu sadece bir arama çözümü ve indeksleme kısmını yine de kendiniz uygulamanız gerekiyor. Arama fonksiyonu açısından sadece en temel ihtiyaçlar karşılanır. Başarı hikayeleri daha az ve projenin olgunluğu biraz daha düşük. Dağıtımı desteklemesi gerektiği için, bazı karmaşık sorgu gereksinimleri için özelleştirmek zor olacaktır.

Bağlantı girişi görünür.

3:Hadoop katkı/indeks

Not: Harita/Azalt modu, dağıtık indeksleme çözümü, Katta ile kullanılabilir.

Avantajlar: Dağıtık indeksleme ve ölçeklenebilirlik.

Dezavantajlar: Sadece indeksleme şeması, arama uygulaması değil. Gerçek zamanlı arama desteği zayıf olan toplu modda çalışıyor.

Bağlantı girişi görünür.

4: LinkedIn'in açık kaynak çözümü

Tanım: Lucene tabanlı bir dizi çözüm var; bunlar arasında neredeyse gerçek zamanlı arama için Zoie, facet arama için Bobo, makine öğrenimi algoritmaları için Decomposition, özetleme depoları için Krati, veritabanı şemaları sarma için Sensei ve daha fazlası

Avantajlar: Dağıtılmış, ölçeklenebilir ve zengin özellikler uygulamasını destekleyen kanıtlanmış çözüm

Eksiler: LinkedIn şirketiyle çok yakın bağlantılı ve kötü kişiselleştirilebilirlik

Bağlantı girişi görünür.

5:Lucandra

Not: Lucene'ye dayanarak, indeks cassandra veritabanında mevcuttur

Artılar: Cassandra'nın avantajlarına bakın

Eksiler: Cassandra'nın dezavantajlarına bak. Ayrıca, bu sadece bir demo ve ciddi şekilde doğrulanmadı

Bağlantı girişi görünür.

6:HBasene

Not: Lucene temelinde, indeks HBase veritabanında mevcuttur

Faydalar: HBase'in avantajlarına bakın

Dezavantajlar: HBase'in dezavantajlarına bakın. Ayrıca, uygulamada lucene terimleri satır olarak saklanırken, her terime karşılık gelen gönderim listeleri sütun olarak saklanır. Tek bir dönem için gönderilme listelerinin sayısı arttıkça, sorgu hızı büyük ölçüde etkilenir


Bağlantı girişi görünür.

7: Xunsearch

Not: Xunsearch, arka uç hizmetleri ve ön uç geliştirme paketlerini kapsayan, net hiyerarşiler ve kesişimsiz yapılandırılmış hiyerarşik bir tasarım benimser. Arka uç C/C++ dilinde yazılmış bir daemondur, ön uç ise web arama projeleri için daha kullanışlı olan en popüler betik dili olan PHP'yi kullanır. Detaylar için Mimari Tasarım bölümüne bakınız.

Bağlantı girişi görünür.






Önceki:EOS Blockchain PHP Geliştirme Kiti
Önümüzdeki:Centos 7 Kurulum Java JDK Tutorial
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com