Forskningsdokument for valg av søkemotorer
Introduksjon til Elasticsearch*
Elasticsearch er en sanntids distribuert søke- og analysemotor. Det hjelper deg å behandle storskala data raskere enn noen gang før.
Det kan brukes til fulltekstsøk, strukturert søk og analyse, og selvfølgelig kan du kombinere alle tre.
Elasticsearch er en søkemotor bygget på fulltekstsøkemotoren Apache Lucene™, som kan sies å være det mest avanserte og effektive, fullverdige åpen kildekode-søkemotorrammeverket som finnes i dag.
Men Lucene er bare et rammeverk, og for å utnytte funksjonene fullt ut, må du bruke JAVA og integrere Lucene i programmet ditt. Det krever mye læring å forstå hvordan det fungerer, og Lucene er virkelig komplisert.
Elasticsearch bruker Lucene som sin interne motor, men når du bruker det til fulltekstsøk, trenger du bare å bruke et samlet API uten å forstå de komplekse Lucene-driftsprinsippene bak det.
Selvfølgelig er ikke Elasticsearch like enkelt som Lucene, det inkluderer ikke bare fulltekstsøk, men kan også utføre følgende oppgaver:
- Distribuert sanntids fillagring og indeksering av hvert felt slik at det kan søkes i.
- Distribuert søkemotor med sanntidsanalyse.
- Den kan skaleres til hundrevis av servere for å håndtere petabyte med strukturert eller ustrukturert data.
Med så mange funksjoner integrert på én server, kan du enkelt kommunisere med ES sitt RESTful API via klienten eller et av dine foretrukne programmeringsspråk.
Å komme i gang med Elasticsearch er veldig enkelt. Det kommer med mange svært rimelige standardinnstillinger, noe som gjør det til en god måte for nybegynnere å unngå å måtte forholde seg til komplekse teorier så snart de kommer i gang.
Den er installert og klar til bruk, og kan være svært produktiv med en liten læringskostnad.
Etter hvert som du lærer mer, kan du også dra nytte av mer avanserte funksjoner i Elasticsearch, og hele motoren kan konfigureres fleksibelt. Du kan tilpasse din egen Elasticsearch etter dine egne behov.
Bruksområder:
- Wikipedia bruker Elasticsearch til å gjøre fulltekstsøk og markere nøkkelord, samt søkeforslag som søk mens du skriver og did-you-mean.
- The Guardian bruker Elasticsearch til å behandle besøkslogger slik at redaktører kan informeres om publikums reaksjoner på ulike artikler i sanntid.
- StackOverflow kombinerer fulltekstsøk med geolokalisering og relevant informasjon for å gi en representasjon av spørsmål relatert til mer slikt.
- GitHub bruker Elasticsearch for å hente ut mer enn 130 milliarder linjer kode.
- Hver dag bruker Goldman Sachs det til å indeksere 5 TB data, og mange investeringsbanker bruker det til å analysere bevegelser i aksjemarkedet.
Men Elasticsearch er ikke bare for store bedrifter, det har også hjulpet mange oppstartsbedrifter som DataDog og Klout med å utvide sine kapasiteter.
Fordeler og ulemper med Elasticsearch**:
fortjeneste
- Elasticsearch er distribuert. Ingen andre komponenter er nødvendige, og distribusjonen foregår i sanntid, kjent som "Push-replikering".
- Elasticsearch støtter fullt ut nesten sanntidssøk med Apache Lucene.
- Håndtering av multitenancy krever ingen spesiell konfigurasjon, mens Solr krever mer avanserte innstillinger.
- Elasticsearch bruker konseptet Gateway for å gjøre det enklere å sikkerhetskopiere.
- Hver node danner en lik nettverksstruktur, og når noen noder feiler, blir andre noder automatisk tildelt til å jobbe i deres sted.
brist
- Bare én utvikler (den nåværende Elasticsearch GitHub-organisasjonen er flere enn det, den har allerede ganske aktive vedlikeholdere)
- Ikke automatisk nok (ikke egnet for det nåværende nye Index Warmup API-et)
Om Solr*
Solr (uttales «solar») er en åpen kildekode søkeplattform for virksomheter for Apache Lucene-prosjektet. Hovedfunksjonene inkluderer fulltekstsøk, treffmarkering, fasettert søk, dynamisk klynging, databaseintegrasjon og behandling av rik tekst (f.eks. Word, PDF). Solr er svært skalerbart og tilbyr distribuert søk og indeksreplikasjon. Solr er den mest populære søkemotoren for bedrifter, og Solr4 legger også til NoSQL-støtte.
Solr er en frittstående, fulltekst-søkeserver skrevet i Java som kjører på en servlet-container som Apache Tomcat eller Jetty. Solr bruker Lucene Java-søkebiblioteket som kjernen for fulltekstindeksering og søk, og har REST-lignende HTTP/XML- og JSON-API-er. Solrs kraftige eksterne konfigurasjonsmuligheter gjør det enkelt å tilpasse seg mange typer applikasjoner uten Java-koding. Solr har en plugin-arkitektur som støtter mer avansert tilpasning.
På grunn av sammenslåingen av Apache Lucene- og Apache Solr-prosjektene i 2010, ble de to prosjektene opprettet og implementert av det samme Apache Software Foundation-utviklingsteamet. Når det gjelder teknologi eller produkter, er Lucene/Solr eller Solr/Lucene det samme.
Fordeler og ulemper med Solr:
fortjeneste
- Solr har et større og mer modent fellesskap av brukere, utviklere og bidragsytere.
- Støtte å legge til indekser i flere formater, som HTML, PDF, Microsoft Office-programvareformater og klartekstformater som JSON, XML, CSV, osv.
- Solr er relativt moden og stabil.
- Søk under indeksering tas ikke hensyn til, og hastigheten er raskere.
brist
- Når indeksen etableres, reduseres søkeeffektiviteten, og sanntidsindeksens søkeeffektivitet er ikke høy.
Elasticsearch vs Solr*
Solr er raskere når man bare søker etter eksisterende data.
Når man indekserer i sanntid, vil Solr føre til IO-blokkering og dårlig spørringsytelse, noe Elasticsearch har en klar fordel.
Etter hvert som datamengden øker, blir Solrs søkeeffektivitet lavere, mens Elasticsearch ikke endres vesentlig.
Oppsummert er Solrs arkitektur ikke egnet for sanntidssøkeapplikasjoner.
Produksjonstesting i virkeligheten*
Figuren nedenfor viser en 50x økning i gjennomsnittlig spørringshastighet etter overgang fra Solr til Elasticsearch.
Sammendrag av sammenligningen mellom Elasticsearch og Solr
- Begge er enkle å installere;
- Solr benytter Zookeeper for distribuert administrasjon, mens Elasticsearch selv har distribuert orkestreringsstyring;
- Solr støtter flere dataformater, mens Elasticsearch kun støtter JSON-filformater;
- Solr tilbyr offisielt flere funksjoner, mens Elasticsearch selv fokuserer mer på kjernefunksjoner, og avanserte funksjoner leveres for det meste av tredjeparts-plugins.
- Solr overgår Elasticsearch i tradisjonelle søkeapplikasjoner, men er betydelig mindre effektivt enn Elasticsearch når det gjelder sanntidssøkeapplikasjoner.
- Solr er en kraftig løsning for tradisjonelle søkeapplikasjoner, men Elasticsearch egner seg bedre for nye sanntidssøkeapplikasjoner.
Andre Lucene-baserte åpne kildekodeløsninger for søkemotorer*
1: Bruk Lucene direkte
Merk: Lucene er et MAJVA-søkebibliotek som ikke er en komplett løsning i seg selv og krever ekstra utviklingsarbeid.
Fordeler: Moden løsning med mange vellykkede saker. Apache-prosjekter på toppnivå som fortsetter å utvikle seg raskt. Stort og aktivt utviklingsmiljø, et stort antall utviklere. Det er bare et klassebibliotek, med nok rom for tilpasning og optimalisering: etter enkel tilpasning kan det dekke de fleste vanlige behov; Optimalisert for å støtte 1 milliard+ søk.
Ulemper: Krever ekstra utviklingsarbeid. All skalering, distribusjon, pålitelighet osv. må implementeres av deg selv; I ikke-sanntid er det en tidsforsinkelse mellom indeksering og søk, og skalerbarheten til dagens "Lucene Near Real Time search"-søkesystem må forbedres ytterligere
Innloggingen med hyperkoblingen er synlig.
2:Katta
Merk: Lucene-basert støttedistribuert, skalerbar, feiltolerant, nær-sanntids søkeordning.
Fordeler: Distribuert rett ut av boksen med Hadoop. Den har en skalerings- og feiltoleransemekanisme.
Ulemper: Det er bare en søkeløsning, og du må fortsatt implementere indekseringsdelen selv. Når det gjelder søkefunksjonen, blir bare de mest grunnleggende behovene oppfylt. Det er færre suksesshistorier, og prosjektets modenhet er litt lavere. Fordi det må støtte distribusjon, vil det være vanskelig å tilpasse det til noen komplekse spørringskrav.
Innloggingen med hyperkoblingen er synlig.
3:Hadoop-bidrag/indeks
Merk: Map/Reduce-modus, en distribuert indekseringsløsning, kan brukes med Katta.
Fordeler: Distribuert indeksering og skalerbarhet.
Ulemper: Kun indekseringssystemet, ikke søkeimplementeringen. Fungerer i batchmodus med dårlig støtte for sanntidssøk.
Innloggingen med hyperkoblingen er synlig.
4: LinkedIns åpen kildekode-løsning
Beskrivelse: En rekke løsninger basert på Lucene, inkludert Zoie for nær-sanntidssøk, Bobo for facet-søk, Decomposer for maskinlæringsalgoritmer, Krati for oppsummeringsrepositorier, Sensei for databaseskjema-innpakning, og flere
Fordeler: Bevist løsning som støtter distribuert, skalerbar og rik funksjonsimplementering
Ulemper: For tett knyttet til LinkedIn-selskapet og dårlig tilpasningsevne
Innloggingen med hyperkoblingen er synlig.
5:Lucandra
Merk: Basert på Lucene finnes indeksen i cassandra-databasen
Fordeler: Se på fordelene med Cassandra
Ulemper: Referer til ulempene med Cassandra. Dette er også bare en demo og har ikke blitt grundig verifisert
Innloggingen med hyperkoblingen er synlig.
6:HBasene
Merk: Basert på Lucene finnes indeksen i HBase-databasen
Fordeler: Se fordelene med HBase
Ulemper: Se på ulempene med HBase. Også i implementeringen lagres lucene-termer som rader, men postlistene som tilsvarer hvert term lagres som kolonner. Etter hvert som antallet publiseringslister for ett enkelt begrep øker, vil hastigheten på søket bli sterkt påvirket
Innloggingen med hyperkoblingen er synlig.
7: Xunsearch
Merk: Xunsearch benytter et strukturert hierarkisk design, inkludert back-end-tjenester og front-end-utviklingspakker, med klare hierarkier og ingen krysningspunkter. Backend er en daemon skrevet i C/C++, mens frontend bruker PHP, det mest populære skriptspråket, som er mer praktisk for nettsøkeprosjekter. For detaljer, se Arkitekturdesign.
Innloggingen med hyperkoblingen er synlig.
|