Solr ve Elastik Arama [kapalı]


729

Bu teknolojiler arasındaki temel mimari farklar nelerdir?

Ayrıca, her biri için genellikle hangi kullanım durumları daha uygundur?


6
şuna bir göz atmak isteyebilirsiniz: stackoverflow.com/questions/2271600/…
Bob Yoplait

13
Bu yazı yeni ve benim açımdan oldukça iyi, datanami.com/2015/01/22/solr-elasticsearch-question
Eric Wang

3
Başka bir 2015 karşılaştırması: quora.com/…
rleir

Yanıtlar:


558

Güncelleme

Artık soru kapsamı düzeltildiğine göre, bu konuda da bir şeyler ekleyebilirim:

Apache Solr ve Elastik Arama arasında birçok karşılaştırma var, bu yüzden en yararlı bulduğum referanslara, yani en önemli yönlere değineceğim :

  • Bob Yoplait kimchy'nin cevabını RubberSearch, Sfenks, Lucene, Solr, Xapian'a bağladı. Hangisi hangi kullanıma uyar? O nedenlerini özetleyen hangi Devam etti ve ElasticSearch yarattı onun görüşüne göre, çok daha üstün dağıtılan model ve kullanım kolaylığı sağlar Solr karşılaştırıldığında.

  • Ryan Sonnek'in Gerçek Zamanlı Arama: Solr ve Elasticsearch, içgörüsel bir analiz / karşılaştırma sağlar ve zaten mutlu bir Solr kullanıcısı olmasına rağmen Solr'dan neden FlexSeach'a geçtiğini açıklar - bunu şöyle özetliyor:

    Solr , standart arama uygulamaları oluştururken tercih edilen bir silah olabilir , ancak Elasticsearch , modern gerçek zamanlı arama uygulamaları oluşturmak için bir mimariyle onu bir sonraki seviyeye taşıyor . Perküsyon, Solr'u sudan tek elle üfleyen heyecan verici ve yenilikçi bir özelliktir. Elasticsearch ölçeklenebilir, hızlı ve entegre bir rüyadır . Adios Solr, seni tanımak güzeldi. [benimkini vurgula]

  • RubberSearch hakkındaki Wikipedia makalesi, yukarıda belirtilenleri hemen hemen özetleyen avantajları ve dezavantajları listeleyen tanınmış Alman iX dergisinden bir karşılaştırma yapıyor :

    Avantajları :

    • Elastik Arama dağıtılır. Ayrı bir proje gerekmez. Çoğaltmalar da gerçek zamanlıya yakındır, buna "Zorla çoğaltma" adı verilir.
    • Elastik Arama, Apache Lucene'nin gerçek zamanlıya yakın aramasını tam olarak destekler.
    • Çok çekiciliğin ele alınması, Solr ile daha gelişmiş bir kurulumun gerekli olduğu özel bir yapılandırma değildir.
    • Elastik Arama, tam yedeklemeleri kolaylaştıran Ağ Geçidi kavramını sunar.

    Dezavantajları :


İlk Yanıt

Tamamen farklı kullanım durumlarını ele alan tamamen farklı teknolojilerdir, bu nedenle hiçbir şekilde anlamlı bir şekilde karşılaştırılamaz:

  • Apache Solr - Apache Solr, Lucene'in fasetleme, ölçeklenebilirlik ve çok daha fazlası gibi ek özelliklerle kullanımı kolay, hızlı bir arama sunucusunda yetenekleri sunar

  • Amazon ElastiCache - Amazon ElastiCache, buluttaki bir bellek içi önbelleğin konuşlandırılmasını, çalıştırılmasını ve ölçeklendirilmesini kolaylaştıran bir web hizmetidir .

    • Amazon ElastiCache'nin yaygın olarak benimsenen bir bellek nesnesi önbellekleme sistemi olan Memcached ile protokol uyumlu olduğunu unutmayın , bu nedenle bugün mevcut Memcached ortamlarında kullandığınız kod, uygulamalar ve popüler araçlar hizmetle sorunsuz bir şekilde çalışacaktır ( ayrıntılar için Memcached'e bakın).

[benimkini vurgula]

Belki de şu iki ilgili teknolojiyle şu ya da bu şekilde karıştırılmıştır:

  • ElasticSearch - Bir Açık Kaynak (Apache 2), Dağıtılmış, dinlendirici, Arama Motoru Apache Lucene üstüne inşa edilmiştir.

  • Amazon CloudSearch - Amazon CloudSearch, müşterilerin bulutlara hızlı ve yüksek oranda ölçeklenebilir arama işlevlerini uygulamalarına kolayca entegre etmelerini sağlayan tam olarak yönetilen bir arama hizmetidir.

Solr ve ElasticSearch teklifleri ilk bakışta çarpıcı benzer ses ve her ikisi de aynı arka uç arama motoru, yani kullanmak Apache Lucene .

İken Solr eskidir ve olgun ve yaygın olarak buna göre kullanılan oldukça çok yönlü, ElasticSearch adresi için özel olarak geliştirilmiştir Solr ile adrese sert (er) modern bulut ortamlarında ölçeklenebilirlik gereksinimleri ile eksiklikleri Solr .

Bu nedenle , her ikisi de prensipte aynı kullanım durumlarını kapsadığını iddia ettiğinden, Elastik Arama'yı yakın zamanda tanıtılan Amazon CloudSearch ile karşılaştırmak en yararlı olacaktır ( Bir Saatte 100 Dolar'dan Az Bir Süre İçin Aramaya Başlama başlıklı girişe bakın ).


@boday: Sesler onlar kullanıyor olabilir gibi Lucene tabanlı elasticsearch gerçekten.
Steffen Opel

6
Şimdi elasticsearch arkasında bir şirket var , ana geliştirici dezavantajı gitmiş olmalı.
javanna

2
Görünüşe göre otomatik ısınma, şu anda RubberSearch tarafından ele alındı. Bkz. Github.com/elasticsearch/elasticsearch/issues/1913
unludo

37
İX dergisi bölümünde listelenen Elastik Arama'nın tüm avantajları artık yanlış. 1) SolrCloud artık ayrı bir proje değil. Gerçekten Solr ve Lucene artık aynı projenin bir parçası. 2) Solr NRT'yi destekler. 3) Solr, tek bir kümede birden çok koleksiyon işler. 4) Solr ayrıca yedeklemeleri kolaylaştıran bir çoğaltma özelliği ekledi.
MattMcKnight

2
Elastik Arama'nın OLAP benzeri işlevsellik isteyenler için sağladığı toplamaları unutmayın. Solr bulutunun sınırlı kısıtlaması var. Toplamalarla ilgili uyarılara ihtiyacınız varsa ES perküsyonu iletir.
markgiaconia

205

Yukarıdaki yanıtların bazılarının artık güncel olmadığını görüyorum. Benim bakış açımdan, hem Solr (Bulut ve Bulut olmayan) hem de Elastik Arama ile günlük olarak çalışıyorum, işte bazı ilginç farklılıklar:

  • Topluluk: Solr daha büyük, daha olgun bir kullanıcı, geliştirici ve katkıda bulunan topluluğa sahiptir. ES, daha küçük ancak etkin bir kullanıcı topluluğuna ve büyüyen bir katkıda bulunan topluluğuna sahiptir
  • Olgunluk: Solr daha olgun, ama ES hızla büyüdü ve stabil olduğunu düşünüyorum
  • Performans: yargılaması zor. Doğrudan performans ölçütleri yapmadım. LinkedIn'deki bir kişi Solr ile ES ve Sensei arasındaki farkı bir kez karşılaştırdı, ancak hem Solr hem de ES için uzman olmayan kurulum kullandıkları için ilk sonuçlar göz ardı edilmelidir.
  • Tasarım: İnsanlar Solr'ı sever. Java API biraz ayrıntılı, ancak insanlar nasıl bir araya getirildiğini seviyor. Solr kodu ne yazık ki her zaman çok hoş değil. Ayrıca, ES'nin yerleşik, gerçek zamanlı çoğaltma, belge ve yönlendirme özellikleri vardır. Bunların bir kısmı Solr'da da mevcut olsa da, biraz sonradan bir düşünce gibi hissediyor.
  • Destek: Hem Solr hem de Elastik Arama için teknoloji ve danışmanlık desteği sağlayan şirketler var. Ben her ikisi için destek sağlayan tek şirket Sematext olduğunu (açıklama: Ben Sematext kurucusu değilim)
  • Ölçeklenebilirlik: her ikisi de çok büyük kümelere ölçeklenebilir. ES'nin ölçeklendirilmesi Solr'un Solr 4.0 sürümünden daha kolaydır, ancak Solr 4.0 ile durum böyle değildir.

Solr ve Elastik Arama konusunu daha kapsamlı bir şekilde ele almak için https://sematext.com/blog/solr-vs-elasticsearch-part-1-overview/ adresine bakın . Bu, Sematext'den direk ve nötr Solr ve Elastik Arama karşılaştırması yapan gönderiler dizisindeki ilk gönderi. Açıklama: Sematext'de çalışıyorum.


@Rubytastic - yazarın dikkatini çekmek ve bellek tüketimi kapsamı almak için yazıya yorum yapmak isteyebilirsiniz. Ancak blog.sematext.com/2012/05/17/elasticsearch-cache-usage yayınında aradığınız şey zaten olabilir.
Otis Gospodnetic

1
İyi yazılmış ilk görüş ve blog yayınlarını paylaştığınız için teşekkür ederiz. Bu yayından bu yana 2 yıl geçti. Bence bu süreçte topladığınız daha fazla içgörü paylaşabilseydiniz topluluğun faydası olurdu. İnsanların solr / elastiki arasından hangilerinin daha iyi olduğuna karar vermelerine yardımcı olabilecek bir şey.
kullanıcı

DataStax ile Solr ile neredeyse gerçek zamanlı çoğaltma elde edersiniz.
KingOfHococrites

23

Burada birçok insan bu Elastik Arama vs Solr sorusuna özellikler ve işlevsellik açısından cevap verdiğini görüyorum, ancak burada (veya başka yerlerde) performans açısından nasıl karşılaştırıldıklarına dair çok fazla tartışma görmüyorum.

Bu yüzden kendi araştırmamı yapmaya karar verdim . Terim arama için zaten Solr kullanan zaten kodlanmış heterojen bir veri kaynağı mikro servisi aldım. SolS for FlexibleSearch'ü kapattım, daha sonra kodlanmış bir yük testi uygulamasıyla AWS'de her iki sürümü de çalıştırdım ve sonraki analizler için performans metriklerini yakaladım.

İşte bulduğum şey. Evrak indeksleme söz konusu olduğunda Elastik Arama'nın% 13 daha yüksek iş hacmi vardı, ancak Solr on kat daha hızlıydı. Belgeleri sorgulamaya gelince, Solr beş kat daha fazla iş hacmine sahipti ve Elastik Arama'dan beş kat daha hızlıydı.


İlginçtir, Solr ve Elasticsearch'ü değerlendiriyorum ve aynı 1M belge dizininin Solr'a kıyasla Elasticsearch için iki kat daha uzun sürdüğünü buldum.
David Thomas

16

Apache Solr'un uzun tarihinden beri, Solr'un bir gücünün ekosistemi olduğunu düşünüyorum . Farklı veri ve amaçlar için birçok Solr eklentisi vardır.

solr yığını

Aşağıdan yukarıya aşağıdaki katmanlarda arama platformu:

  • Veri
    • Amaç: Çeşitli veri türlerini ve kaynaklarını temsil etmek
  • Belge oluşturma
    • Amaç: Dizin oluşturma için belge bilgileri oluşturmak
  • Endeksleme ve arama
    • Amaç: Belge dizini oluşturma ve sorgulama
  • Mantık geliştirme
    • Amaç: Arama sorgularını ve sonuçları işlemek için ek mantık
  • Arama platformu hizmeti
    • Amaç: Bir servis platformu sağlamak için arama motoru çekirdeğinin ek işlevlerini ekleyin.
  • UI uygulaması
    • Amaç: Son kullanıcı arama arayüzü veya uygulamaları

Referans makale: Kurumsal arama


14

Elasticsearch ve Solr ve splunk arasında büyük farklar içeren bir tablo oluşturdum, 2016 güncellemesi olarak kullanabilirsiniz: resim açıklamasını buraya girin


1
Veri şeması satırı biraz yanıltıcı ... Elastik, esasen bir şema olan (ancak varsayılan olarak gerekli olmayan) Eşleşmelere sahiptir. Solr, çalışmadan önce yapılandırmayı yüklemesi gerektiği şekilde gönderilir, hemen seçebileceğiniz ve biri şematik olan çeşitli sağlanan örnek yapılandırmalar vardır, ancak dikkatle kontrol edilen şemalar solr kullanırken muhtemelen daha yaygındır.
Gus

2
Solr Streaming API, MapReduce özellikleri sunar
whomer


13

.Net uygulamaları için hem solr hem de elastik arama üzerinde çalışıyorum. Karşılaştığım en büyük fark

Elastik arama:

  • Daha fazla kod ve daha az yapılandırma, ancak değiştirmek için api var ama yine de bir kod değişikliği
  • karmaşık türler için, tür içindeki türler (iç içe türler gibi)

Solr:

  • daha az kod ve daha fazla yapılandırma ve dolayısıyla daha az bakım
  • sorgulama sırasında sonuçları gruplandırmak için (elastik aramada elde etmek için çok fazla iş düz şekilde yapılmaz)

7

Yukarıdaki bağlantıların hepsi değer taşıyor ve geçmişte bana büyük fayda sağlasa da, son 15 yıldır çeşitli Lucene arama motorlarına "maruz kalan" bir dilbilimci olarak Python'da elastik arama geliştirmenin çok hızlı olduğunu söylemeliyim. Bununla birlikte, bazı kodlar bana sezgisel gelmedi. Böylece, ELK yığınının bir bileşenine, Kibana'ya açık kaynaklı bir bakış açısıyla ulaştım ve Kibana'da elasticsearch'in biraz şifreli kodunu kolayca oluşturabildiğimi buldum. Ayrıca, Chrome Sense es sorgularını Kibana'ya da çekebilirim. Es'i değerlendirmek için Kibana kullanırsanız, değerlendirmenizi daha da hızlandıracaktır. Diğer platformlarda çalışması saat süren şey, birkaç dakika içinde en kötü (en büyük veri setleri) elasticsearch (RESTful arayüzü) üstünde JSON'da Sense'de çalışmaya başladı. en iyi saniye. Elasticsearch belgeleri, 700'den fazla sayfa olsa da, normalde SOLR veya diğer Lucene belgelerinde çözülmesi gereken sorulara cevap vermedi, bu da analiz edilmesi daha fazla zaman aldı. Ayrıca, Faceting'i yeni bir seviyeye taşıyan elastik aramadaki Agregalara göz atmak isteyebilirsiniz.

Daha büyük resim: Veri bilimi, metin analizi veya hesaplamalı dilbilim yapıyorsanız, elasticsearch, bilgi alma alanında iyi bir şekilde yenilik yapan bazı sıralama algoritmalarına sahiptir. Herhangi bir TF / IDF algoritması, Metin Frekansı / Ters Belge Frekansı kullanıyorsanız, elasticsearch BM25, En İyi Eşleşme 25 ve diğer Alaka Düzeyi Sıralama algoritmalarını kullanarak bile bu 1960'ın algoritmasını yeni bir seviyeye genişletir. Yani, kelimeleri, cümleleri veya cümleleri puanlıyorsanız veya sıralıyorsanız, elasticsearch bu puanlamayı saatlerce alan diğer veri analizi yaklaşımlarının büyük yükü olmadan başka bir elasticsearch zaman tasarrufu olmadan anında yapar. Es ile, toplamalardan kovalamanın bazı güçlü yönlerini gerçek zamanlı JSON veri alaka düzeyi puanlaması ve sıralaması ile birleştirerek, kazanan bir kombinasyon bulabilirsiniz,

Not: yukarıdaki toplamalar hakkında benzer bir tartışma gördünüz, ancak toplamalar ve alaka düzeyi puanlaması hakkında değil - herhangi bir çakışma için özür dilerim. Açıklama: Elastik bir çalışma yapmıyorum ve elasticsearch ile kötü bir fikir olmayacak bir hayır işi yapmadıkça, farklı bir mimari yol nedeniyle mükemmel çalışmalarından yakın gelecekte yararlanamayacağım.


6

Kullanım durumunu düşünün:

  1. Çok sayıda (100+) küçük (10Mb-100Mb, 1000-100000 belge) arama dizini.
  2. Birçok uygulama tarafından kullanılıyorlar (mikro hizmetler)
  3. Her uygulama birden fazla dizin kullanabilir
  4. Boyut endeksine göre küçük, evet. Ancak büyük yük (saniyede yüzlerce arama isteği) ve istekler karmaşıktır (çoklu toplamalar, koşullar vb.)
  5. Duruş sürelerine izin verilmiyor
  6. Bütün bunlar yıllarca çalışıyor ve sürekli büyüyor.

Her bir dizin için ayrı ES örneğine sahip olma fikri - bu durumda çok büyük bir ek yüktür.

Deneyimlerime dayanarak, bu tür kullanım durumu Elasticsearch ile desteklenmesi çok karmaşıktır.

Neden?

İLK.

En büyük sorun, temel sırt uyumluluğunu göz ardı etmektir.

Kırılma değişiklikleri çok havalı! (Not: yükseltildiğinde tüm SQL ifadelerinizde küçük değişiklikler yapmanızı gerektiren SQL sunucusunu hayal edin ... hayal edemiyorum. Ama ES için normal)

Bir sonraki büyük sürümde düşürülecek itirazlar çok seksi! (Not: Java, 20 yaşından büyük ancak hala gerçek Java sürümünde çalışan bazı kullanım dışı bırakmalar içeriyor ...)

Ve sadece bu değil, bazen hiçbir yerde belgelenmemiş bir şeyiniz bile var (kişisel olarak sadece bir kez rastladı ama ...)

Yani. ES'yi yükseltmek istiyorsanız (bazı uygulamalar için yeni özelliklere ihtiyacınız olduğu veya hata düzeltmeleri almak istediğiniz için) - cehennemdesiniz. Özellikle büyük sürüm yükseltme ile ilgili ise.

İstemci API'sı uyumlu olmayacak. Dizin ayarları geri uyumlu olmayacak. Ve ES yükseltme ile tüm uygulama / hizmetleri aynı anda yükseltin gerçekçi değildir.

Ama bunu zaman zaman yapmalısınız. Başka yol yok.

Mevcut dizinler otomatik olarak yeni sürüme geçiriliyor mu? - Evet. Ancak bazı eski dizin ayarlarını değiştirmeniz gerektiğinde size yardımcı olmaz.

Bununla yaşamak için, uygulamalarınızın / hizmetlerinizin gelecekteki ES sürümleriyle ileriye dönük uyumluluğuna sürekli olarak çok fazla yatırım yapmanız gerekir. Ya da uygulama / hizmetler ve ES arasında size uyumlu istemci API'sini sağlayan bir tür ara katman yazılımı oluşturmanız (ve yine de sürekli olarak desteklemeniz) gerekir. (Ve Aktarım İstemcisi'ni kullanamazsınız (çünkü her küçük ES sürümü yükseltmesi için kavanoz yükseltmesi gerekir) ve bu gerçek hayatınızı kolaylaştırmaz)

Basit ve ucuz görünüyor mu? Hayır değil. Ne münasebet. ES'ye dayalı karmaşık altyapının sürekli bakımı, mümkün olan her açıdan pahalıya mal olur.

İKİNCİ. Basit API? Şey ... hayır gerçekten. Gerçekten karmaşık koşullar ve toplamalar kullanırken .... 5 iç içe düzeyleri ile JSON isteği ne olursa olsun, ama basit değil.


Ne yazık ki, SOLR ile ilgili hiçbir deneyimim yok, bu konuda hiçbir şey söyleyemem.

Ancak Sphinxsearch, tamamen geri uyumlu SphinxQL nedeniyle, bu senaryodan çok daha iyi.

Not: Sfenksarama / Mantikor gerçekten ilginçtir. Lucine tabanlı değil ve sonuç olarak ciddi bir şekilde farklı. ES'nin sahip olmadığı ve küçük / orta boy dizinlerle çılgın hızlı olan birkaç benzersiz özellik içerir.


4

Zaten SOLR kullanıyorsanız, buna bağlı kalın. Başlıyorsanız, Elastik aramaya gidin.

Maksimum büyük sorunlar SOLR'da düzeltildi ve oldukça olgun.


7
Elastik'i neden yeni projeler için öneriyorsunuz?
forsberg

1
Elastik arama yenidir, bu nedenle en son teknolojileri / mimariyi kullanır.
Behzad Qureshi

5
Yeni bir şey de yaratabilirdim ama yeni teknoloji veya farklı bir mimari kullandığım için, zaten piyasada olandan daha iyi olduğu anlamına gelmiyor.
Jan Sommer

Kabul etti, ancak bir mimar olarak, zaten piyasada olandan daha iyisine gideceksiniz. Benim 2 sent :)
Behzad Qureshi

3

Elasticsearch'ü 3 yıldır ve Solr'ı yaklaşık bir ay kullanıyorum, Sollast kurulumuna kıyasla elasticsearch kümesinin kurulumu oldukça kolay olduğunu düşünüyorum. Elasticsearch, harika bir açıklama içeren bir yardım belgeleri havuzuna sahiptir. Kullanım durumlarından biri ES'de bulunan ancak Solr'da bulunmayan Histogram Toplama ile sıkışmıştı.


2

Sadece Elastik arama kullanıyorum. Ben solr başlatmak çok zor buldum beri. Elastik aramanın özellikleri:

  1. Başlaması kolay, çok az ayar. Yeni başlayanlar bile adım adım bir küme oluşturabilir.
  2. NoSQL sorgusu kullanan basit Restful API. Kolay erişim için birçok dil kütüphanesi.
  3. İyi belge, kitabı okuyabilirsiniz:. Resmi web sitesinde bir web versiyonu var.

2

Solr çok karmaşık ve iç içe veri arama da çok karmaşık bir iç içe belge ekleyin. ancak Elastik Arama iç içe belge ve arama eklemek kolaydır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.