Bu teknolojiler arasındaki temel mimari farklar nelerdir?
Ayrıca, her biri için genellikle hangi kullanım durumları daha uygundur?
Bu teknolojiler arasındaki temel mimari farklar nelerdir?
Ayrıca, her biri için genellikle hangi kullanım durumları daha uygundur?
Yanıtlar:
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ı :
Sadece bir ana geliştirici[mevcut elasticsearch GitHub organizasyonuna göre , ilk etapta oldukça aktif bir komisyoncu tabanına sahip olmanın yanı sıra artık geçerli değil ]Otomatik ısınma özelliği yoktur[yeni Dizin Isınma API'sına göre artık uygulanamaz ]
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 .
[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 ).
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:
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.
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ı.
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.
Aşağıdan yukarıya aşağıdaki katmanlarda arama platformu:
Referans makale: Kurumsal arama
Elasticsearch ve Solr ve splunk arasında büyük farklar içeren bir tablo oluşturdum, 2016 güncellemesi olarak kullanabilirsiniz:
.Net uygulamaları için hem solr hem de elastik arama üzerinde çalışıyorum. Karşılaştığım en büyük fark
Elastik arama:
Solr:
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.
Kullanım durumunu düşünün:
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.
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.
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ı.
Sadece Elastik arama kullanıyorum. Ben solr başlatmak çok zor buldum beri. Elastik aramanın özellikleri: