Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 7839|Răspunde: 0

Selecția motoarelor de căutare: Elasticsearch vs Solr

[Copiază linkul]
Postat pe 11.12.2018 13:42:36 | | | |
Document de cercetare pentru selectarea motoarelor de căutare

Introducere în Elasticsearch*


Elasticsearch este un motor distribuit de căutare și analiză în timp real. Te ajută să procesezi date la scară largă mai rapid ca niciodată.

Poate fi folosit pentru căutare full-text, căutare structurată și analiză, iar, desigur, le poți combina pe toate trei.

Elasticsearch este un motor de căutare construit pe motorul de căutare full-text Apache Lucene™, care poate fi considerat cel mai avansat și eficient cadru open source complet disponibil astăzi.

Dar Lucene este doar un framework, iar pentru a profita la maximum de funcțiile sale, trebuie să folosești JAVA și să integrezi Lucene în programul tău. Este nevoie de multă învățare ca să înțelegi cum funcționează, iar Lucene este foarte complicată.

Elasticsearch folosește Lucene ca motor intern, dar când îl folosești pentru căutare full-text, trebuie doar să folosești o API unificată fără să înțelegi principiile complexe de funcționare Lucene din spatele ei.

Desigur, Elasticsearch nu este la fel de simplu ca Lucene, ci include funcții de căutare în text integral, dar poate îndeplini și următoarele sarcini:

  • Stocare distribuită în timp real și indexare a fiecărui câmp pentru a putea fi căutat.
  • Motor de căutare distribuit cu analize în timp real.
  • Poate extinde la sute de servere pentru a gestiona petabytes de date structurate sau nestructurate.

Cu atât de multe funcționalități integrate într-un singur server, poți comunica ușor cu API-ul RESTful ES prin client sau oricare dintre limbajele tale preferate.

Începerea cu Elasticsearch este foarte simplă. Vine cu multe setări implicite foarte rezonabile, ceea ce îl face o modalitate bună pentru începători de a evita să se confrunte cu teorii complexe imediat ce încep.

Este instalat și gata de folosit, iar acesta poate fi foarte productiv cu un cost mic de învățare.

Pe măsură ce afli mai multe, poți profita și de funcții mai avansate ale Elasticsearch, iar întregul motor poate fi configurat flexibil. Îți poți personaliza propriul Elasticsearch în funcție de nevoile tale.

Cazuri de utilizare:

  • Wikipedia folosește Elasticsearch pentru a face căutări full-text și pentru a evidenția cuvinte-cheie, precum și pentru sugestii de căutare precum search-as-you-tas-you și what-you-meaning.
  • The Guardian folosește Elasticsearch pentru a procesa jurnalele de vizitatori, astfel încât editorii să poată fi informați în timp real despre reacțiile publicului la diferite articole.
  • StackOverflow combină căutarea în text integral cu geolocalizarea și informațiile relevante pentru a oferi o reprezentare a întrebărilor legate de mai multe aspecte.
  • GitHub folosește Elasticsearch pentru a recupera peste 130 de miliarde de linii de cod.
  • În fiecare zi, Goldman Sachs îl folosește pentru a indexa 5TB de date, iar multe bănci de investiții îl folosesc pentru a analiza mișcările pieței de capital.

Dar Elasticsearch nu este destinat doar marilor întreprinderi, ci a ajutat și multe startup-uri precum DataDog și Klout să-și extindă capabilitățile.

Avantaje și dezavantaje ale Elasticsearch**:

merit

  • Elasticsearch este distribuit. Nu sunt necesare alte componente, iar distribuția este în timp real, cunoscută sub numele de "replicare Push".
  • Elasticsearch suportă complet căutarea aproape în timp real cu Apache Lucene.
  • Gestionarea multitenanței nu necesită o configurație specială, în timp ce Solr necesită setări mai avansate.
  • Elasticsearch folosește conceptul de Gateway pentru a facilita backup-ul.
  • Fiecare nod formează o structură de rețea egală, iar când unele noduri cedează, alte noduri sunt automat atribuite să lucreze în locul lor.


Neajuns

  • Doar un singur dezvoltator (actuala organizație Elasticsearch GitHub este mai mult decât atât, are deja întreținători destul de activi)
  • Nu este suficient de automat (nu este potrivit pentru actualul nou API Index Warmup)


Despre Solr*

Solr (pronunțat "solar") este o platformă open-source de căutare pentru companii pentru proiectul Apache Lucene. Principalele sale caracteristici includ căutarea textului integral, marcarea de tip hitmarking, căutarea facetată, clusterizarea dinamică, integrarea bazelor de date și procesarea textului bogat (de exemplu, Word, PDF). Solr este foarte scalabil și oferă căutare distribuită și replicare a indexului. Solr este cel mai popular motor de căutare de nivel enterprise, iar Solr4 adaugă, de asemenea, suport pentru NoSQL.

Solr este un server de căutare independent, cu text complet, scris în Java care rulează pe un container servlet precum Apache, Tomcat sau Jetty. Solr folosește biblioteca de căutare Lucene Java ca bază pentru indexarea textului integral și căutare și are API-uri HTTP/XML și JSON asemănătoare REST. Capacitățile puternice de configurare externă ale lui Solr fac ușoară adaptarea la multe tipuri de aplicații fără codare Java. Solr are o arhitectură de pluginuri pentru a susține personalizări mai avansate.

Datorită fuziunii proiectelor Apache Lucene și Apache Solr în 2010, cele două proiecte au fost create și implementate de aceeași echipă de dezvoltare a Apache Software Foundation. Când vine vorba de tehnologie sau produse, Lucene/Solr sau Solr/Lucene sunt la fel.

Avantaje și dezavantaje ale Solr:

merit

  • Solr are o comunitate mai mare și mai matură de utilizatori, dezvoltatori și contribuitori.
  • Suportă adăugarea de indexuri în mai multe formate, cum ar fi HTML, PDF, formate software Microsoft Office și formate de text simplu precum JSON, XML, CSV etc.
  • Solr este relativ matur și stabil.
  • Căutarea în timp ce indexează nu este luată în considerare, iar viteza este mai mare.


Neajuns

  • Când indexul este stabilit, eficiența căutării scade, iar eficiența căutării în timp real nu este ridicată.


Elasticsearch vs Solr*

Solr este mai rapid când caută pur și simplu date existente.




La indexarea în timp real, Solr va cauza blocarea IO și performanța slabă a interogărilor, ceea ce Elasticsearch are un avantaj clar.



Pe măsură ce volumul de date crește, eficiența căutării Solr scade, în timp ce Elasticsearch nu se schimbă semnificativ.



În concluzie, arhitectura Solr nu este potrivită pentru aplicații de căutare în timp real.

Teste de producție în lumea reală*

Figura de mai jos arată o creștere medie de 50 de ori a vitezei interogării după trecerea de la Solr la Elasticsearch.




Rezumatul comparației Elasticsearch vs Solr

  • Ambele sunt ușor de instalat;
  • Solr folosește Zookeeper pentru managementul distribuit, în timp ce Elasticsearch însuși are management de orchestrare distribuită;
  • Solr suportă mai multe formate de date, în timp ce Elasticsearch suportă doar formate de fișiere JSON;
  • Solr oferă oficial mai multe funcționalități, în timp ce Elasticsearch se concentrează mai mult pe funcțiile de bază, iar funcțiile avansate sunt oferite în mare parte de pluginuri terțe.
  • Solr depășește Elasticsearch în aplicațiile tradiționale de căutare, dar este semnificativ mai puțin eficient decât Elasticsearch în gestionarea aplicațiilor de căutare în timp real.
  • Solr este o soluție puternică pentru aplicațiile tradiționale de căutare, dar Elasticsearch este mai potrivit pentru aplicațiile emergente de căutare în timp real.


Alte soluții pentru motoare de căutare open source bazate pe Lucene*


1: Folosiți-o direct pe Lucene

Notă: Lucene este o bibliotecă de căutare JAVA care nu este o soluție completă de sine stătătoare și necesită efort suplimentar de dezvoltare.

Avantaje: Soluție matură cu multe cazuri de succes. Proiecte de top Apache care continuă să avanseze rapid. Comunitate mare și activă de dezvoltatori, un număr mare de dezvoltatori. Este doar o bibliotecă de clase, cu suficient spațiu pentru personalizare și optimizare: după o personalizare simplă, poate satisface majoritatea nevoilor comune; Optimizat pentru a susține 1 miliard+ de căutări.

Dezavantaje: necesită efort suplimentar de dezvoltare. Toată scalarea, distribuția, fiabilitatea etc. trebuie implementată de tine însuți; În timpul non-real, există o întârziere între indexare și căutare, iar scalabilitatea schemei actuale de căutare "Lucene Near Real Time" trebuie îmbunătățită și mai mult

Autentificarea cu hyperlink este vizibilă.

2:Katta

Notă: Schemă de căutare distribuită, scalabilă, tolerantă la erori și aproape în timp real bazată pe Lucene.

Pro: Distribuit direct cu Hadoop. Are un mecanism de scalare și toleranță la defecte.

Dezavantaje: Este doar o soluție de căutare și tot trebuie să implementezi singur partea de indexare. În ceea ce privește funcția de căutare, sunt îndeplinite doar cele mai de bază nevoi. Există mai puține povești de succes, iar maturitatea proiectului este puțin mai mică. Pentru că trebuie să suporte distribuția, va fi dificil de personalizat pentru unele cerințe complexe de interogare.

Autentificarea cu hyperlink este vizibilă.

3:Hadoop contrib/index

Notă: Map/Reduce mode, o soluție de indexare distribuită, poate fi folosită cu Katta.

Avantaje: Indexare distribuită și scalabilitate.

Dezavantaje: Doar schema de indexare, nu implementarea căutării. Funcționează în modul batch cu suport slab pentru căutare în timp real.

Autentificarea cu hyperlink este vizibilă.

4: Soluția open-source a LinkedIn

Descriere: O gamă de soluții bazate pe Lucene, inclusiv Zoie pentru căutare aproape în timp real, Bobo pentru căutare pe fațete, Decomposer pentru algoritmi de învățare automată, Krati pentru depozite de rezumatizare, Sensei pentru înfășurarea schemelor de baze de date și altele

Avantaje: Soluție dovedită care suportă implementarea distribuită, scalabilă și bogată a funcționalităților

Dezavantaje: Este prea strâns legat de compania LinkedIn și personalizare slabă

Autentificarea cu hyperlink este vizibilă.

5:Lucandra

Notă: Pe baza lui Lucene, indexul există în baza de date Cassandra

Avantaje: Referiți-vă la avantajele Cassandrei

Dezavantaje: Referiți-vă la dezavantajele Cassandrei. De asemenea, aceasta este doar o demonstrație și nu a fost verificată pe larg

Autentificarea cu hyperlink este vizibilă.

6:HBasene

Notă: Pe baza Lucene, indicele există în baza de date HBase

Beneficii: Referiți-vă la avantajele HBazei

Dezavantaje: Referiți-vă la dezavantajele HBase. De asemenea, în implementare, termenii lucene sunt stocați ca rânduri, dar listele de postări corespunzătoare fiecărui termen sunt stocate ca coloane. Pe măsură ce numărul listelor de postare pentru un singur termen crește, viteza interogării va fi afectată semnificativ


Autentificarea cu hyperlink este vizibilă.

7: Xunsearch

Notă: Xunsearch adoptă un design ierarhic structurat, incluzând servicii back-end și pachete de dezvoltare front-end, cu ierarhii clare și fără intersecție. Backend-ul este un daemon scris în C/C++, în timp ce frontend-ul folosește PHP, cel mai popular limbaj de scripting, care este mai convenabil pentru proiectele de căutare web. Pentru detalii, vezi Design arhitectural.

Autentificarea cu hyperlink este vizibilă.






Precedent:Kit de dezvoltare EOS Blockchain PHP
Următor:Instalare Centos 7 Java JDK Tutorial
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com