Forskningsdokument til udvælgelse af søgemaskiner
Introduktion til elasticsearch*
Elasticsearch er en realtids distribueret søge- og analysemotor. Det hjælper dig med at behandle store data hurtigere end nogensinde før.
Det kan bruges til fuldtekstsøgning, struktureret søgning og analyser, og selvfølgelig kan du kombinere alle tre.
Elasticsearch er en søgemaskine bygget på fuldtekst-søgemaskinen Apache Lucene™, som kan siges at være det mest avancerede og effektive, fuldt udstyrede open source-søgemaskine-rammeværk, der findes i dag.
Men Lucene er bare et framework, og for at udnytte dets funktioner fuldt ud, skal du bruge JAVA og integrere Lucene i dit program. Det kræver meget læring at forstå, hvordan det fungerer, og Lucene er virkelig kompliceret.
Elasticsearch bruger Lucene som sin interne motor, men når du bruger det til fuldtekstsøgning, behøver du kun bruge et samlet API uden at forstå de komplekse Lucene-driftsprincipper bag det.
Selvfølgelig er Elasticsearch ikke bare så simpelt som Lucene; det inkluderer ikke kun fuldtekst-søgningsfunktioner, men kan også udføre følgende opgaver:
- Distribueret realtids fillagring og indeksering af hvert felt, så det kan søges.
- Distribueret søgemaskine med realtidsanalyse.
- Den kan skaleres til hundredvis af servere for at håndtere petabytes af strukturerede eller ustrukturerede data.
Med så mange funktioner integreret på én server kan du nemt kommunikere med ES's RESTful API via klienten eller et af dine foretrukne programmeringssprog.
Det er meget nemt at komme i gang med Elasticsearch. Den kommer med mange meget rimelige standarder, hvilket gør det til en god måde for begyndere at undgå at skulle håndtere komplekse teorier, så snart de går i gang.
Den er installeret og klar til brug, og den kan være meget produktiv med en lille læringsomkostning.
Efterhånden som du lærer mere, kan du også drage fordel af mere avancerede funktioner i Elasticsearch, og hele motoren kan konfigureres fleksibelt. Du kan tilpasse din egen Elasticsearch efter dine egne behov.
Brugsscenarier:
- Wikipedia bruger Elasticsearch til fuldtekstsøgninger og til at fremhæve nøgleord samt søgeforslag som søg-som-du-skriver og did-you-mean.
- The Guardian bruger Elasticsearch til at behandle besøgslogfiler, så redaktører kan informeres om offentlighedens reaktioner på forskellige artikler i realtid.
- StackOverflow kombinerer fuldtekstsøgning med geolokation og relevant information for at give en repræsentation af spørgsmål relateret til mere lignende.
- GitHub bruger Elasticsearch til at hente mere end 130 milliarder linjer kode.
- Hver dag bruger Goldman Sachs det til at indeksere 5TB data, og mange investeringsbanker bruger det til at analysere aktiemarkedsbevægelser.
Men Elasticsearch er ikke kun for store virksomheder, det har også hjulpet mange startups som DataDog og Klout med at udvide deres kapaciteter.
Fordele og ulemper ved Elasticsearch**:
Fortjeneste
- Elasticsearch er distribueret. Ingen andre komponenter er nødvendige, og distributionen foregår i realtid, kendt som "Push-replikering".
- Elasticsearch understøtter fuldt ud næsten realtidssøgning med Apache Lucene.
- Håndtering af multitenancy kræver ingen særlig konfiguration, mens Solr kræver mere avancerede indstillinger.
- Elasticsearch bruger konceptet Gateway for at gøre det lettere at tage backup.
- Hver node danner en lige netværksstruktur, og når nogle noder fejler, bliver andre noder automatisk tildelt til at arbejde i deres sted.
mangel
- Kun én udvikler (den nuværende Elasticsearch GitHub-organisation er flere, den har allerede ret aktive vedligeholdere)
- Ikke automatisk nok (ikke egnet til det nuværende nye Index Warmup API)
Om Solr*
Solr (udtales "solar") er en open source virksomhedssøgeplatform for Apache Lucene-projektet. Dens hovedfunktioner omfatter fuldtekstsøgning, hitmarkering, facetteret søgning, dynamisk klyngedannelse, databaseintegration og behandling af rich text (f.eks. Word, PDF). Solr er meget skalerbart og tilbyder distribueret søgning og indeksreplikering. Solr er den mest populære søgemaskine til virksomheder, og Solr4 tilføjer også NoSQL-understøttelse.
Solr er en selvstændig, fuldtekst-søgeserver skrevet i Java, som kører på en servlet-container som Apache Tomcat eller Jetty. Solr bruger Lucene Java-søgebiblioteket som kerne til fuldtekstindeksering og søgning og har REST-lignende HTTP/XML- og JSON-API'er. Solrs kraftfulde eksterne konfigurationsmuligheder gør det nemt at tilpasse sig mange typer applikationer uden Java-kodning. Solr har en plugin-arkitektur, der understøtter mere avanceret tilpasning.
På grund af fusionen af Apache Lucene- og Apache Solr-projekterne i 2010 blev de to projekter skabt og implementeret af det samme Apache Software Foundation-udviklingsteam. Når det kommer til teknologi eller produkter, er Lucene/Solr eller Solr/Lucene det samme.
Fordele og ulemper ved Solr:
Fortjeneste
- Solr har et større og mere modent fællesskab af brugere, udviklere og bidragydere.
- Understøttelse af tilføjelse af indekser i flere formater, såsom HTML, PDF, Microsoft Office-softwareformater og klartekstformater som JSON, XML, CSV osv.
- Solr er relativt moden og stabil.
- Søgning under indeksering tages ikke i betragtning, og hastigheden er hurtigere.
mangel
- Når indekset etableres, falder søgeeffektiviteten, og realtidsindeksets søgeeffektivitet er ikke høj.
Elasticsearch vs Solr*
Solr er hurtigere, når man blot søger efter eksisterende data.
Når man indekserer i realtid, vil Solr forårsage IO-blokering og dårlig forespørgselsydelse, hvilket Elasticsearch har en klar fordel.
Efterhånden som mængden af data øges, bliver Solrs søgeeffektivitet lavere, mens Elasticsearch ikke ændrer sig væsentligt.
Sammenfattende er Solrs arkitektur ikke egnet til realtidssøgningsapplikationer.
Virkelighedsbaseret produktionstest*
Figuren nedenfor viser en 50-dobling i gennemsnitlig forespørgselshastighed efter skiftet fra Solr til Elasticsearch.
Resumé af Elasticsearch vs Solr-sammenligning
- Begge er nemme at installere;
- Solr udnytter Zookeeper til distribueret styring, mens Elasticsearch selv har distribueret orkestreringsstyring;
- Solr understøtter flere dataformater, mens Elasticsearch kun understøtter JSON-filformater;
- Solr tilbyder officielt flere funktioner, mens Elasticsearch selv fokuserer mere på kernefunktioner, og avancerede funktioner leveres for det meste af tredjeparts-plugins.
- Solr overgår Elasticsearch i traditionelle søgeapplikationer, men er betydeligt mindre effektiv end Elasticsearch, når det gælder realtidssøgningsapplikationer.
- Solr er en kraftfuld løsning til traditionelle søgeapplikationer, men Elasticsearch egner sig bedre til nye realtidssøgeapplikationer.
Andre Lucene-baserede open source søgemaskineløsninger*
1: Brug Lucene direkte
Bemærk: Lucene er et JAVA-søgebibliotek, der ikke er en komplet løsning i sig selv og kræver yderligere udviklingsindsats.
Fordele: Moden løsning med mange succesfulde sager. Apache-projekter på øverste niveau, der fortsætter med at udvikle sig hurtigt. Stort og aktivt udviklingsfællesskab, et stort antal udviklere. Det er blot et klassebibliotek med plads til tilpasning og optimering: efter simpel tilpasning kan det opfylde de fleste almindelige behov; Optimeret til at understøtte 1 milliard+ søgninger.
Ulemper: Kræver ekstra udviklingsindsats. Al skalering, distribution, pålidelighed osv. skal implementeres selv; I ikke-realtid er der en tidsforsinkelse mellem indeksering og søgning, og skalerbarheden af det nuværende "Lucene Near Real Time search"-søgesystem skal forbedres yderligere
Hyperlink-login er synlig.
2:Katta
Bemærk: Lucene-baseret supportdistribueret, skalerbar, fejltolerant, næsten realtids søgeordning.
Fordele: Distribueret direkte fra boksen med Hadoop. Den har en skalerings- og fejltolerancemekanisme.
Ulemper: Det er bare en søgeløsning, og du skal stadig implementere indekseringsdelen selv. Når det gælder søgefunktionen, er det kun de mest basale behov, der opfyldes. Der er færre succeshistorier, og projektets modenhed er en smule lavere. Da den skal understøtte distribution, vil det være svært at tilpasse til nogle komplekse forespørgselskrav.
Hyperlink-login er synlig.
3:Hadoop-bidrag/indeks
Bemærk: Map/Reduce-tilstand, en distribueret indekseringsløsning, kan bruges med Katta.
Fordele: Distribueret indeksering og skalerbarhed.
Ulemper: Kun indekseringssystemet, ikke søgeimplementeringen. Fungerer i batch-tilstand med dårlig understøttelse af realtidssøgning.
Hyperlink-login er synlig.
4: LinkedIns open source-løsning
Beskrivelse: En række løsninger baseret på Lucene, herunder Zoie til næsten realtidssøgning, Bobo til facetsøgning, Decomposer til maskinlæringsalgoritmer, Krati til summariseringsrepositories, Sensei til databaseskema-wrapping og flere
Fordele: Gennemprøvet løsning, der understøtter distribueret, skalerbar og rig funktionsimplementering
Ulemper: For tæt forbundet med LinkedIn-firmaet og dårlig tilpasningsevne
Hyperlink-login er synlig.
5:Lucandra
Bemærk: Baseret på Lucene findes indekset i cassandra-databasen
Fordele: Se på fordelene ved Cassandra
Ulemper: Nævn ulemperne ved Cassandra. Dette er desuden kun en demo og er ikke blevet grundigt verificeret
Hyperlink-login er synlig.
6:HBasene
Bemærk: Baseret på Lucene findes indekset i HBase-databasen
Fordele: Se fordelene ved HBase
Ulemper: Se på ulemperne ved HBase. Desuden gemmes lucene-termer som rækker i implementeringen, men opslagslisterne for hvert led gemmes som kolonner. Efterhånden som antallet af opslagslister for et enkelt begreb vokser, vil hastigheden af forespørgslen blive stærkt påvirket
Hyperlink-login er synlig.
7: Xunsearch
Bemærk: Xunsearch anvender et struktureret hierarkisk design, inklusive back-end services og front-end udviklingspakker, med klare hierarkier og uden krydsfelt. Backenden er en daemon skrevet i C/C++, mens frontenden bruger PHP, det mest populære scriptsprog, som er mere praktisk til websøgningsprojekter. For detaljer, se Arkitekturdesign.
Hyperlink-login er synlig.
|