Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 7839|Svar: 0

Sökmotorval: Elasticsearch vs Solr

[Kopiera länk]
Publicerad på 2018-12-11 13:42:36 | | | |
Forskningsdokument om sökmotorval

Introduktion till Elasticsearch*


Elasticsearch är en realtidsbaserad distribuerad sök- och analysmotor. Det hjälper dig att bearbeta storskalig data snabbare än någonsin tidigare.

Den kan användas för fulltextsökning, strukturerad sökning och analys, och självklart kan du kombinera alla tre.

Elasticsearch är en sökmotor byggd på fulltextsökmotorn Apache Lucene™, som kan sägas vara det mest avancerade och effektiva fullfjädrade open source-ramverket för sökmotorer som finns idag.

Men Lucene är bara ett ramverk, och för att utnyttja dess funktioner fullt ut behöver du använda JAVA och integrera Lucene i ditt program. Det krävs mycket lärande för att förstå hur det fungerar, och Lucene är verkligen komplicerad.

Elasticsearch använder Lucene som sin interna motor, men när man använder det för fulltextsökning behöver man bara använda ett enhetligt API utan att förstå de komplexa Lucene-principerna bakom det.

Självklart är Elasticsearch inte lika enkelt som Lucene, det inkluderar inte bara fulltextsökningsfunktioner, utan kan även utföra följande uppgifter:

  • Distribuerad realtidslagring av filer och indexering av varje fält så att det kan sökas.
  • Distribuerad sökmotor med realtidsanalys.
  • Den kan skalas till hundratals servrar för att hantera petabyte av strukturerad eller ostrukturerad data.

Med så många funktioner integrerade på en server kan du enkelt kommunicera med ES:s RESTful API via klienten eller något av dina föredragna programmeringsspråk.

Att komma igång med Elasticsearch är väldigt enkelt. Det kommer med många mycket rimliga standarder, vilket gör det till ett bra sätt för nybörjare att slippa hantera komplexa teorier så fort de börjar.

Den är installerad och redo att användas, och kan vara mycket produktiv med en liten inlärningskostnad.

När du lär dig mer kan du också dra nytta av mer avancerade funktioner i Elasticsearch, och hela motorn kan konfigureras flexibelt. Du kan anpassa din egen Elasticsearch efter dina egna behov.

Användningsområden:

  • Wikipedia använder Elasticsearch för att göra fulltextsökningar och markera nyckelord, samt sökförslag som sök-som-du-skriver och did-you-mean.
  • The Guardian använder Elasticsearch för att bearbeta besöksloggar så att redaktörer kan informeras om allmänhetens reaktioner på olika artiklar i realtid.
  • StackOverflow kombinerar fulltextsökning med geolokalisering och relevant information för att ge en representation av frågor relaterade till mer liknande.
  • GitHub använder Elasticsearch för att hämta mer än 130 miljarder rader kod.
  • Varje dag använder Goldman Sachs det för att indexera 5TB data, och många investmentbanker använder det för att analysera aktiemarknadsrörelser.

Men Elasticsearch är inte bara för stora företag, det har också hjälpt många startups som DataDog och Klout att utöka sina möjligheter.

För- och nackdelar med Elasticsearch**:

förtjänst

  • Elasticsearch är distribuerad. Inga andra komponenter krävs, och distributionen sker i realtid, känt som "Push-replikering".
  • Elasticsearch stöder fullt ut nästan realtidssökning med Apache Lucene.
  • Att hantera multitenancy kräver ingen speciell konfiguration, medan Solr kräver mer avancerade inställningar.
  • Elasticsearch använder konceptet Gateway för att göra det enklare att säkerhetskopiera.
  • Varje nod bildar en lika nätverksstruktur, och när vissa noder fallerar tilldelas andra noder automatiskt att arbeta i deras ställe.


brist

  • Endast en utvecklare (den nuvarande Elasticsearch GitHub-organisationen är fler än så, den har redan ganska aktiva underhållare)
  • Inte tillräckligt automatiskt (inte lämpligt för det nuvarande nya Index Warmup API:et)


Om Solr*

Solr (uttalas "solar") är en öppen källkodsplattform för företagssökning för Apache Lucene-projektet. Dess huvudfunktioner inkluderar fulltextsökning, träffmarkering, facetterad sökning, dynamisk klustring, databasintegration och bearbetning av rik text (t.ex. Word, PDF). Solr är mycket skalbart och erbjuder distribuerad sökning och indexreplikering. Solr är den mest populära sökmotorn för företagsklass, och Solr4 lägger också till NoSQL-stöd.

Solr är en fristående fulltextsökserver skriven i Java som körs på en servlet-container som Apache Tomcat eller Jetty. Solr använder Lucene Java-sökbiblioteket som kärna för fulltextindexering och sökning, och har REST-liknande HTTP/XML- och JSON-API:er. Solrs kraftfulla externa konfigurationsmöjligheter gör det enkelt att anpassa sig till många typer av applikationer utan Java-kodning. Solr har en plugin-arkitektur för att stödja mer avancerad anpassning.

På grund av sammanslagningen av Apache Lucene- och Apache Solr-projekten 2010 skapades och implementerades de två projekten av samma Apache Software Foundation-utvecklingsteam. När det gäller teknik eller produkter är Lucene/Solr eller Solr/Lucene likadant.

För- och nackdelar med Solr:

förtjänst

  • Solr har en större och mer mogen gemenskap av användare, utvecklare och bidragsgivare.
  • Stöd för att lägga till index i flera format, såsom HTML, PDF, Microsoft Office-programvaruformat och klartextformat som JSON, XML, CSV, etc.
  • Solr är relativt mogen och stabil.
  • Sökning under indexering tas inte i beaktande, och hastigheten är snabbare.


brist

  • När indexet etableras minskar sökeffektiviteten och realtidsindexets sökeffektivitet är inte hög.


Elasticsearch vs Solr*

Solr är snabbare när man helt enkelt söker efter befintlig data.




Vid realtidsindexering orsakar Solr IO-blockering och dålig frågeprestanda, vilket Elasticsearch har en tydlig fördel.



När mängden data ökar minskar Solrs sökeffektivitet, medan Elasticsearch inte förändras nämnvärt.



Sammanfattningsvis är Solrs arkitektur inte lämplig för realtidssökningsapplikationer.

Verklig produktionstestning*

Figuren nedan visar en 50-faldig ökning i genomsnittlig frågehastighet efter att ha bytt från Solr till Elasticsearch.




Sammanfattning av jämförelsen mellan Elasticsearch och Solr

  • Båda är enkla att installera;
  • Solr använder Zookeeper för distribuerad hantering, medan Elasticsearch själv har distribuerad orkestreringshantering;
  • Solr stöder fler dataformat, medan Elasticsearch endast stöder JSON-filformat;
  • Solr erbjuder officiellt fler funktioner, medan Elasticsearch själv fokuserar mer på kärnfunktioner, och avancerade funktioner tillhandahålls mestadels av tredjepartsplugins.
  • Solr överträffar Elasticsearch i traditionella sökapplikationer, men är betydligt mindre effektivt än Elasticsearch när det gäller realtidssökningsapplikationer.
  • Solr är en kraftfull lösning för traditionella sökapplikationer, men Elasticsearch är bättre lämpad för framväxande realtidssökapplikationer.


Andra Lucene-baserade öppna sökmotorlösningar*


1: Använd Lucene direkt

Notera: Lucene är ett MAJVA-sökbibliotek som inte är en komplett lösning i sig och kräver ytterligare utvecklingsarbete.

Fördelar: Moget lösning med många framgångsrika fall. Apache-projekt på toppnivå som fortsätter att utvecklas snabbt. Stor och aktiv utvecklingsgemenskap, ett stort antal utvecklare. Det är bara ett klassbibliotek, med tillräckligt med utrymme för anpassning och optimering: efter enkel anpassning kan det möta de flesta vanliga behov; Optimerad för att stödja 1 miljard+ sökningar.

Nackdelar: Kräver extra utvecklingsarbete. All skalning, distribution, tillförlitlighet osv. måste implementeras själv; I icke-realtid finns det en tidsfördröjning mellan indexering och sökning, och skalbarheten i det nuvarande söksystemet "Lucene Near Real Time" behöver förbättras ytterligare

Inloggningen med hyperlänken är synlig.

2:Katta

Notera: Lucene-baserat stödbaserat distribuerat, skalbart, feltolerant, nästan realtidssöksystem.

Fördelar: Distribuerad direkt från lådan med Hadoop. Den har en skalnings- och felkontrollmekanism.

Nackdelar: Det är bara en söklösning, och du måste fortfarande implementera indexeringsdelen själv. När det gäller sökfunktionen uppfylls endast de mest grundläggande behoven. Det finns färre framgångssagor och projektets mognad är något lägre. Eftersom det behöver stödja distribution kommer det att vara svårt att anpassa för vissa komplexa frågekrav.

Inloggningen med hyperlänken är synlig.

3:Hadoop-bidrag/index

Notera: Map/Reduce-läget, en distribuerad indexeringslösning, kan användas med Katta.

Fördelar: Distribuerad indexering och skalbarhet.

Nackdelar: Endast indexeringsschemat, inte sökimplementeringen. Fungerar i batchläge med dåligt stöd för realtidssökning.

Inloggningen med hyperlänken är synlig.

4: LinkedIns open source-lösning

Beskrivning: En rad lösningar baserade på Lucene, inklusive Zoie för nästan realtidssökning, Bobo för facetsökning, Decomposer för maskininlärningsalgoritmer, Krati för sammanfattningsarkiv, Sensei för databasschema-wrapping och mer

Fördelar: Beprövad lösning som stödjer distribuerad, skalbar och rik funktionsimplementering

Nackdelar: För nära kopplad till LinkedIn-företaget och dålig anpassningsbarhet

Inloggningen med hyperlänken är synlig.

5:Lucandra

Not: Baserat på Lucene finns indexet i cassandra-databasen

Fördelar: Se fördelarna med Cassandra

Nackdelar: Hänvisa till Cassandras nackdelar. Dessutom är detta bara en demo och har inte verifierats noggrant.

Inloggningen med hyperlänken är synlig.

6:HBasene

Notera: Baserat på Lucene finns indexet i HBase-databasen

Fördelar: Se fördelarna med HBase

Nackdelar: Hänvisa till nackdelarna med HBase. Dessutom lagras lucene-termer som rader i implementeringen, men postlistorna som motsvarar varje term lagras som kolumner. När antalet postlistor för en enda term växer påverkas hastigheten på sökningen kraftigt


Inloggningen med hyperlänken är synlig.

7: Xunsearch

Observera: Xunsearch har en strukturerad hierarkisk design, inklusive backend-tjänster och frontend-utvecklingspaket, med tydliga hierarkier och ingen korsning. Backend är en daemon skriven i C/C++, medan frontend använder PHP, det mest populära skriptspråket, vilket är mer praktiskt för webbsökningsprojekt. För detaljer, se Arkitekturdesign.

Inloggningen med hyperlänken är synlig.






Föregående:EOS Blockchain PHP utvecklingskit
Nästa:Centos 7 Installation Java JDK Tutorial
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com