Solr Vs Elasticsearch: Hangi Arama Motoru Daha İyi?
Solr , Elasticsearch'e karşı
Solr ve Elasticsearch arasındaki temel fark, Solr'un tamamen açık kaynaklı bir arama motoru olmasıdır. Elasticsearch açık kaynak olmasına rağmen hala Elastic çalışanları tarafından yönetilmektedir. Solr metin aramayı desteklerken Elasticsearch çoğunlukla analitik sorgulama, filtreleme ve gruplama için kullanılır.
Bu yazıda Solr ve Elasticsearch hakkında detaylı olarak tartışacağız.
Hangisi daha iyi veya daha hızlı?
Hangisi daha iyi ölçeklenir?
Solr vs Elasticserach, hangisinin yönetimi daha kolay?
Hangisine gitmeliyiz?
Solr'dan Elasticsearch'e geçmeli misiniz?
Başlayalım.
Solr'a Genel Bakış
Solr, Lucene adlı bir java kitaplığında yerleşik bir açık kaynaklı arama platformudur ve kullanımı kolay bir şekilde Apache Lucene arama işlevi sağlar.
Neredeyse on yıldır arama motoru endüstrisinde; güçlü ve geniş bir kullanıcı topluluğu ile kendini kanıtlamış bir üründür. Solr, otomatik yük dengeleme, dağıtılmış yeniden indeksleme, yük devretme ve kurtarma sorguları sunar.
Doğru uygulanırsa ve iyi yönetilirse son derece güvenilir, ölçeklenebilir, hataya dayanıklı bir arama motoru haline gelebilir. Netflix, eBay, Instagram ve Amazon (Bulut Arama) gibi birçok İnternet devi, birden fazla web sitesini indeksleyip arama yapabildiğinden Solr kullanıyor.
Temel özelliklerin listesi şunları içerir: –
- Tam metin arama
- Vurgulamak
- Çok Dizili Arama
- Gerçek zamanlı indeksleme
- Dinamik Kümeleme
- Veritabanı entegrasyonu
- NoSQL işlevselliği ve verimli belge işleme (ör. kelimeler ve PDF dosyaları)
Elasticsearch'e Genel Bakış
Elasticsearch, Apache Lucene kitaplığının üzerine inşa edilmiş, dağıtılmış, açık kaynak kodlu (Apache 2 lisansı) bir RESTful arama motorudur.
Dağıtılmış bir tam metin arama motoru, HTTP web arabirimi (kalan) ile desteklenen çoklu kiracı ve şemasız JSON belgeleri sağlar. Elastik arama için resmi istemci kitaplıkları java, groovy, PHP, ruby, Perl, Python, .net ve JavaScript için mevcuttur.
Dağıtılmış arama motorları, parçalara bölünebilen dizinler içerir ve her parçanın birden fazla kopyası olabilir. Her Elasticsearch düğümü bir veya daha fazla parçaya sahip olabilir. Motoru ayrıca bir koordinatör görevi görür, işlemleri doğru parçalar üzerinde delege eder.
Elasticsearch, neredeyse gerçek zamanlı arama ölçeklenebilirliğine sahiptir. En önemli özelliklerinden biri çok kiracılı olmasıdır.
Temel özelliklerin listesi şunları içerir:
- Dağıtılmış Arama
- Çoklu kiralama dönemi
- Bir dizi Analizör
- Tarama Arama
- Grup Toplama
Yaş ve Olgunluk
Solr, 2004 yılında yonik tarafından CNET ağı üzerinde oluşturulduğundan beri daha geniş bir geçmişe sahiptir. Daha sonra 2006 yılında Apache'ye katkıda bulunmuştur. Öte yandan, elastik arama 2001 yılında kurucusu Shaw Bannon tarafından pusula adıyla başlatılmıştır.
O zamandan beri Kibana, Logstash ve Beat'in yaratıcıları Elastic Stack ürün ailesine katıldı. Kayıtların aranması ve analizi alanında etkili bir katılımcıdır. Bu nedenle Solr, pazarda ilk olmak ve daha derin bir erişime sahip olmak açısından avantajlara sahiptir.
Solr ve Elasticsearch : Topluluk ve Açık Kaynak
Hepsinin çok aktif toplulukları var. Github'a bakarsanız, birçok versiyonu olan yaygın açık kaynaklı projeler olduğunu görebilirsiniz.
Her ikisinin de Apache lisansı altında yayınlanmasına ve her ikisinin de açık kaynak olmasına rağmen, biraz farklı çalıştıklarını belirtmek çok önemlidir. Solr açık bir kaynaktır: herkes yardım edebilir ve katkıda bulunabilir. Elastik aramaya da ekleme yapılabilir, ancak bunu kabul etmek esnek Elasticsearch çalışanlarına veya şirketine bağlıdır.
Bu iyi mi kötü mü? Bu, bir işleve ihtiyacınız varsa ve onu topluma yeterli kalitede katkıda bulunursanız, kabul edilebileceği anlamına gelir. Elasticsearch ile elastik kararın kabul edilip edilmeyeceğine bağlıdır.
Öte yandan, daha fazla kalite kontrol yoluyla elastik aramaya yapılan katkılar, daha fazla tutarlılık ve kalite sağlayabilir.
Kurulum ve Yapılandırma
Esnek aramanın kurulumu kolaydır ve çok hafiftir. Solr dağıtım paketi boyutunun (6.2.0) mevcut sürümü yaklaşık 150 MB'dir. Öte yandan, elastik aramanın mevcut sürümü (2.4.0) yalnızca 26,1 MB'lik dağıtım paketi boyutuna sahiptir. Ayrıca, Elasticsearch dakikalarını birkaç dakika içinde yükleyebilir ve çalıştırabilirsiniz.
Ancak, bu dağıtım ve kullanım kolaylığı, Elasticsearch'ün yanlış yönetilmesi durumunda bir sorun haline gelebilir. JSON tabanlı yapılandırma kolaydır, ancak dosyadaki her yapılandırma için yorum belirtmek istiyorsanız, bu sizin için çalışmaz.
Solr'un en son sürümü, kümeleme algoritmalarını kaydetme ve özel snippet'ler oluşturma gibi önceki sürümlerdeki karmaşıklıkları ortadan kaldıran iyi bir dinlenme API'leri seti sağlar.
Uygulamanız JSON kullanıyorsa, genel olarak Elasticsearch daha iyi bir seçimdir. Aksi takdirde, schema.xml ve solrconfig.xml iyi belgelendiğinden Solr'ı kullanın.
Solr ve Elasticsearch : Düğüm Keşfi
Bu iki ana ürün arasındaki bir diğer önemli fark, düğüm keşfidir. Bir küme başlangıçta oluşturulduğunda, yeni bir düğüme katıldığında veya kümedeki bir düğüme kötü bir şey olduğunda. Verilen kriterlere göre ne yapacağınıza karar vermelisiniz. Bu, bulunan sözde sorumluluk düğümlerinden biridir.
Elasticsearch, tamamen hataya dayanıklı (yani ağ bölümlerinden etkilenmeyen) olmak için üç özel ana düğüm gerektiren Zen adlı kendi keşif uygulamasını kullanır.
Solr, liderlerin keşfi ve seçimi için Apache zookeeper'ı kullanır. Bu, hataya dayanıklı ve tamamen kullanılabilir Solr bulut kümeleri için en az üç animatör-yönetici örneği gerektiren harici bir animatör-yönetici koleksiyonu gerektirir.
Parça yerleştirme
Genel olarak, Elasticsearch, dizinin konumu ve oluşturulduğu parça açısından çok dinamiktir. Bir işlem gerçekleştiğinde, örneğin yeni bir düğüm bağlandığında veya kümeden bir düğüm kaldırıldığında, parçaları küme etrafında hareket ettirebilirsiniz.
Bilincin etiketleriyle shard'ın nereye yerleştirilip yerleştirilemeyeceğine karar verebiliriz, api çağrılarını kullanarak istek üzerine Elasticsearch'e shard'ları taşımasını söyleyebiliriz. Solr ise daha statiktir.
Bir Solr düğümü, kendi başına hiçbir şey yapmadan Solr kümesine katıldığında veya bu kümeden çıktığında, verileri yeniden dengelememiz gerekir. Tabii ki, parçaları hareket ettirebiliriz, ancak birkaç adımı içerir. Bir kopya oluşturmamız, verileri Senkronize etmesini beklememiz ve ardından artık ihtiyacımız olmayanı silmemiz gerekiyor.
Bazı şeyleri otomatikleştirmemize izin veren bir şey. Tüm parçaları silmenin veya başka bir düğüme hızlı bir şekilde kopyalamanın hızlı bir yolu olan toplama API'sini kullanarak Solr bulutundaki düğümleri silin veya değiştirin. Bu hala manuel API çağrıları gerektirse de, otomatik olarak yapılmaz.
Solr ve Elasticsearch : Dizin Oluşturma ve Arama
Veri kaynağı
Solr, XML dosyaları, virgülle ayrılmış değer (csv) dosyaları ve veritabanı tablolarından çıkarılan verilerin yanı sıra Microsoft Word ve PDF gibi yaygın dosya biçimleri dahil olmak üzere farklı kaynaklardan gelen verileri kabul eder.
Elastik arama, birçok farklı kaynaktan gelen verileri de kabul eder. Örneğin, AWS SQS, Dynamodb (Amazon nosql), dosya sistemi, git, JDBC, JMS, Kafka, LDAP, MongoDB, Neo4j, Rabbitmq, Redis, Solr ve konvülsiyonlar. Ayrıca birkaç eklenti mevcut.
Aranıyor
Solr daha çok metin odaklıyken, elastik arama genellikle sorguları ayrıştırmak, filtrelemek ve gruplamak için kullanılır.
Elastik aramanın arkasındaki ekip, her zaman bu sorguları daha verimli hale getirmeye (bellek kullanımını ve CPU kullanımını azaltma yöntemleri dahil) ve lucene ve elastik arama düzeylerini karşılaştırarak performansı artırmaya çalışır. Yalnızca metin araması değil, aynı zamanda zaman serisi karmaşık arama ve toplama gerektiren uygulamalar için elastik aramanın daha iyi bir seçenek olduğu açıktır.
Her iki arama motoru da metni terimlere veya etiketlere bölmek için birden çok ayrıştırıcı ve işaretleyici kullanır ve bunlar daha sonra dizine eklenir. Elasticsearch, belge veya sorgu başına bir dizi ayrıştırıcı veya belirteçten oluşan bir sorgu ayrıştırıcı dizesi belirtmenize olanak tanır.
Bir ayrıştırıcının çıktısı ikinci ayrıştırıcının girdisi olacak şekilde birden çok ayrıştırıcıyı bağlayın. Tersine, Solr bu işlevi desteklemez.
dizin
Her iki arama motorunu da dokümanları eşleştirmek için stop kelimelerini ve eş anlamlılarını kullanırken indeksleyebilirsiniz. Solr'da, bağlantı indeksi tek bir parça olmalı ve belgeler arasındaki ilişkileri (örn. sql bağlantıları) aramak için tüm düğümlere kopyalanmalıdır.
Bu, kriterlere uyan bir alt belgeye sahip ana belgeyi bulmanıza yardımcı olur. Bazı performans testlerine dayanarak Elasticsearch, Solr'dan daha iyi sonuçlar üretebilir.
Solr ve Elasticsearch : API
Apache Solr'ı veya elastik aramayı biliyorsanız, bunların bir HTTP API'sini ortaya çıkardığını bilirsiniz.
Solr'a aşina olan kişiler, ondan arama sonuçlarını almak için sorgu tanımlı istek işleyicilerinden birine ve sorgu koşulunu tanımlayan parametreleri geçirmeye ihtiyacınız olduğunu bilir.
Hangi sorgu ayrıştırıcısını kullanmayı seçtiğinize bağlı olarak, bu parametreler farklı olacaktır, ancak yöntem aynı kalacaktır. Arama sonuçları için Solr'a bir HTTP alma isteği gönderilir.
İşin iyi yanı, tek bir yanıt biçimiyle sınırlı olmamanızdır: bunlar için XML, Javabon, JSON biçiminde ve diğer çeşitli biçimlerde bir yanıt yazıcısı geliştirmeyi seçebilirsiniz.
Böylece siz ve arama uygulamanız için en uygun formatı seçebilirsiniz. API yalnızca sorguları içermez, çünkü farklı arama bileşenleri hakkında bazı istatistikler alabilir veya koleksiyon oluşturma gibi Solr davranışını kontrol edebilirsiniz.
Peki ya elastik arama? Elasticsearch, http alma, silme, yayınlama ve koyma yöntemleri kullanılarak erişilebilen bir ara API'si sunar.
API'si yalnızca belgeleri sorgulamaya veya silmeye değil, aynı zamanda dizinler oluşturmaya, bunları yönetmeye, analizleri kontrol etmeye ve mevcut durumu ve esnek arama ayarlarını açıklayan tüm metrikleri almaya da izin verir. Elastik arama hakkında her türlü bilgiyi API'nin geri kalanından edinebilirsiniz.
Solr'a alışkınsanız, ilk başta garip gelebilecek bir şey var. Tek esnek biçim araması JSON'da yanıt verebilir, örneğin XML yanıtı yok. Elastik arama ile Solr arasındaki bir diğer büyük fark da sorgulardır. JSON gösterimi olarak yapı.
Yapı, esnek aramaların sorguyu nasıl anlaması gerektiği ve dolayısıyla hangi sonuçların döndürüleceği konusunda JSON nesnelerine yönelik sorgular üzerinde çok fazla kontrol sağlar.
Solr ve Elasticsearch : Önbellek
Bir diğer büyük fark, elasticsearch ve Solr mimarisidir. Her iki üründe de önbelleğe almanın nasıl çalıştığını araştırmayın, yalnızca aralarındaki temel farklara işaret edeceğiz.
Segment, çoğunlukla değişmez olan ve veri içeren birkaç dosya tarafından oluşturulan bir Lucene dizinidir. Verileri indekslerken, Lucene segmentler oluşturur ve ayrıca segment birleştirme adı verilen bir işlem sırasında birkaç küçük mevcut segmenti daha büyük segmentler halinde birleştirebilir.
Solr, tüm segmentleri için belirli bir türdeki bir parçanın tek bir önbellek örneği olan global önbelleklere sahiptir. Tek bir segmenti değiştirdiğinizde, tüm önbelleği geçersiz kılmanız ve temizlemeniz gerekir. Bu zaman alır ve donanım kaynaklarını tüketir.
Analiz Motoru
Solr büyüktür ve birçok veri analizi yeteneğine sahiptir. Eski güzel tarafla başlayabiliriz: ilk uygulama, onu anlamak ve anlamak için verileri kesmenize ve kesmenize izin verir.
Daha sonra benzer işlevselliğe sahip, ancak daha hızlı ve daha az bellek gereksinimlerine sahip JSON yönü gelir ve son olarak akış tabanlı ifadelere, birden çok kaynaktan (SQL, Solr, Polygon gibi) verileri birleştirebilen ve çeşitli ifadeler (sıralama, çıkarma, önemli terimleri hesaplama vb.).
Elasticsearch, Solr'un çoğu eski özelliği gibi yalnızca birinci sınıf veri analizi gerçekleştirmekle kalmayan güçlü bir toplama motoru sağlar. Ancak aynı zamanda iç içe veri analizine de izin verir (örneğin, her mağaza departmanındaki her ürün kategorisinin ortalama fiyatını hesaplama). Ayrıca, toplu sonuçların üzerinde analizi destekleyerek hareketli ortalamanın hesaplanması ve diğer işlevler gibi eylemlere yol açar.
Son olarak, deneysel olarak işaretlenmiş olmasına rağmen Elasticsearch, bir dizi alan için istatistikleri hesaplayan dizi toplama için destek sağlar.
Solr vs Elasticsearch: Tam metin arama işlevi
Solr ve Elasticsearch, lucene'nin özelliklerinden neredeyse gerçek zamanlı olarak yararlanır. Bu, sorguların indekslemeden hemen sonra belgelerle eşleşmesini sağlar.
Solr kod tabanına baktığınızda, tam metin arama ile ilgili özelliklerin zenginliği ve tam metin aramaya yakın özellikler çok büyük.
Solr eğitim kursumuz bunlarla dolu! Çeşitli mesajlar aracılığıyla uygulanan geniş bir istek ayrıştırıcı seçeneğinden başlayarak, yazım denetleyicisini ve kapsamlı vurgulama desteğini kullanarak kullanıcı yazım hatalarını düzeltme yeteneğine kadar, bu son derece yapılandırılabilir.
Elasticsearch, kullanıcı uygulama ayrıntılarını gizleyen özel bir ipucu adam API'sine sahiptir. Bize, esnekliği azaltma pahasına önerileri uygulamak için daha kolay bir yol sağlar.
Solr, metin aramaya daha da odaklanmış durumda. Öte yandan, esnek arama genellikle filtreleme ve gruplama (sorgu iş yüklerini ayrıştırma) için kullanılır ve mutlaka metin aramaları değildir.
Elastik arama geliştiricileri, bu sorguyu lucene ve elastik arama seviyelerinde daha verimli hale getirmek (bellek kullanımını ve CPU kullanımını azaltmak) için çok çaba sarf ediyor.
Dostça gelişme
Bir geliştiriciye hangi elastik aramayı sevdiğini soracaksanız, cevap API, yönetilebilirlik ve kurulum kolaylığı olacaktır.
Sorun giderme söz konusu olduğunda, ElasticSearch, disk kullanım bilgilerinden, bellek ve çöp toplama yoluyla iş istatistiklerinden önbellek, arabellek ve iş parçacığı havuzu kullanımı gibi dahili elastik aramalara kadar durumu hakkında bilgi almak kolaydır.
Solr henüz yapmadı – JMX MBean ve yeni Solr gösterge API'si aracılığıyla bazı bilgiler edinebilirsiniz, ancak bu, görülmesi gereken birkaç yer olduğu anlamına gelir, orada olmasına rağmen her şey orada değildir.
Solr vs Elasticsearch: Düz olmayan veri işleme
Düz olmayan verileriniz, iç içe geçmiş nesnelerin içinde ve başka bir iç içe nesnenin içinde iç içe geçmiş birçok nesneniz mi var? Verileri düzleştirmek istemiyorsunuz, ancak güzel MongoDB JSON nesnenizi dizine ekleyin ve tam metin araması için hazır mısınız?
Elasticsearch, nesneleri, iç içe belgeleri ve ebeveyn-çocuk ilişkilerini destekleyen mükemmel bir araç olacaktır. Solr burada en uygun olmayabilir, ancak XML belgelerinin yanı sıra JSON'u indekslerken ebeveyn-alt ve iç içe belgeleri de desteklediğini unutmayın.
Solr, farklı koleksiyonlar içinde ve içinde sorgu zamanı birleştirmelerini destekler, bu nedenle indeksleme süresinin ebeveyn-alt işleme ile sınırlı değildir.
DSL Sorgusu
Yüksek sesle söyleyelim: Elasticsearch sorgu dili gerçekten harika. JSON'u seviyorsanız. Sorguyu JSON kullanarak oluşturmanıza olanak tanır, böylece iyi yapılandırılmış olur ve tüm mantık üzerinde kontrol sahibi olmanızı sağlar. Çok karmaşık bir eşleştirme mantığı yazmak için farklı sorgu türlerini karıştırabilirsiniz.
Metin arama her şey değildir; toplamalar, sonuç daraltma vb. içerebilir. Verilerinizden ihtiyacınız olan her şey sorgu dilinde temsil edilebilir.
Öte yandan Solr, en azından en çok kullanılan API'sinde hala URI aramasını kullanıyor (XML sorgu ayrıştırıcısı ve API JSON sınırlı da mevcuttur). Tüm parametreler, uzun ve karmaşık sorgulara yol açabilecek URI'ye girer. Her iki arama motoru da kullanıcıların bir soruyla alakalı sonuçları bulmasına yardımcı olur.
ev borcu WordPress sitesi