Otsingumootori valiku uurimisdokument
Sissejuhatus Elasticsearchi*
Elasticsearch on reaalajas hajutatud otsingu- ja analüütikamootor. See aitab sul töödelda suuremahulisi andmeid kiiremini kui kunagi varem.
Seda saab kasutada täisteksti otsinguks, struktureeritud otsinguks ja analüütikaks ning loomulikult saab kõiki kolme kombineerida.
Elasticsearch on otsingumootor, mis põhineb täistekstil põhineval otsingumootoril Apache Lucene™, mida võib pidada tänapäeva kõige arenenumaks ja tõhusamaks täisfunktsionaalsemaks avatud lähtekoodiga otsingumootori raamistikuks.
Aga Lucene on lihtsalt raamistik ja selle funktsioonide täielikuks kasutamiseks pead kasutama JAVA-d ning integreerima Lucene oma programmi. Võtab palju õppimist, et mõista, kuidas see töötab, ja Lucene on tõesti keeruline.
Elasticsearch kasutab Lucene'i sisemise mootorina, kuid täisteksti otsingus tuleb kasutada ainult ühtset API-d, ilma et mõistaks selle keerukaid Lucene tööpõhimõtteid.
Loomulikult ei ole Elasticsearch mitte ainult nii lihtne kui Lucene, see sisaldab mitte ainult täisteksti otsingufunktsioone, vaid suudab täita ka järgmisi ülesandeid:
- Hajutatud reaalajas failisalvestus ja iga välja indekseerimine, et neid saaks otsida.
- Hajutatud otsingumootor reaalajas analüütikaga.
- See suudab skaleeruda sadade serverite hulka, et töödelda petabaitide kaupa struktureeritud või struktureerimata andmeid.
Nii paljude funktsioonidega ühte serverisse integreerituna saad hõlpsasti suhelda ES-i RESTful API-ga kliendi või mõne oma eelistatud programmeerimiskeele kaudu.
Elasticsearchiga alustamine on väga lihtne. Sellega kaasneb palju väga mõistlikke vaikimisi, mis teeb sellest hea võimaluse algajatele vältida keeruliste teooriatega tegelemist kohe, kui nad alustavad.
See on paigaldatud ja kasutusvalmis ning võib olla väga produktiivne väikese õppekuluga.
Kui õpid rohkem, saad kasutada ka Elasticsearchi keerukamaid funktsioone ning kogu mootorit saab paindlikult seadistada. Saad kohandada oma Elasticsearchi vastavalt oma vajadustele.
Kasutusjuhtumid:
- Wikipedia kasutab Elasticsearchi täisteksti otsingute tegemiseks ja märksõnade esiletõstmiseks ning otsingusoovituste tegemiseks nagu otsi kirjutamise järgi ja kas sa mõtlesid.
- The Guardian kasutab Elasticsearchi, et töödelda külastajate logisid, et toimetajaid saaks reaalajas informeerida avalikkuse reaktsioonidest erinevatele artiklitele.
- StackOverflow ühendab täisteksti otsingu geolokatsiooni ja asjakohase infoga, et pakkuda esitlust küsimustest, mis on seotud pigem sellega.
- GitHub kasutab Elasticsearchi, et hankida üle 130 miljardi koodirea.
- Iga päev kasutab Goldman Sachs seda 5TB andmete indekseerimiseks ning paljud investeerimispangad kasutavad seda aktsiaturu liikumiste analüüsimiseks.
Kuid Elasticsearch ei ole mõeldud ainult suurtele ettevõtetele, vaid on aidanud paljudel idufirmadel nagu DataDog ja Klout oma võimekust laiendada.
Elasticsearchi plussid ja miinused**:
Merit
- Elasticsearch on jaotatud. Muid komponente pole vaja ning jaotus toimub reaalajas, mida nimetatakse "Push replicationiks".
- Elasticsearch toetab täielikult peaaegu reaalajas otsingut Apache Lucene'iga.
- Mitme rentnuse haldamiseks ei ole vaja erilist seadistust, samas kui Solr vajab keerukamaid seadistusi.
- Elasticsearch kasutab Gateway kontseptsiooni, et muuta varundamine lihtsamaks.
- Iga sõlm moodustab võrdse võrgustruktuuri ning kui mõned sõlmed ebaõnnestuvad, määratakse automaatselt teised sõlmed nende asemele.
Puudus
- Ainult üks arendaja (praegune Elasticsearch GitHubi organisatsioon on rohkem, neil on juba üsna aktiivsed hooldajad)
- Ei ole piisavalt automaatne (ei sobi praegusele uuele Index Warmup API-le)
Solr* kohta
Solr (hääldatakse "päikeseenergia") on avatud lähtekoodiga ettevõtte otsinguplatvorm Apache Lucene projekti jaoks. Selle peamised funktsioonid hõlmavad täisteksti otsingut, tabamuste märkimist, tahkude otsingut, dünaamilist klasterdamist, andmebaaside integreerimist ja rikkaliku teksti (nt Word, PDF) töötlemist. Solr on väga skaleeritav ning pakub hajutatud otsingut ja indeksi replikatsiooni. Solr on kõige populaarsem ettevõtte tasemel otsingumootor ning Solr4 lisab ka NoSQL toe.
Solr on iseseisev, täistekst otsinguserver, mis on kirjutatud Java keeles ja töötab servlet-konteineris, näiteks Apache Tomcat või Jetty. Solr kasutab täisteksti indekseerimise ja otsingu tuumana Lucene Java otsinguteeki ning omab REST-laadseid HTTP/XML ja JSON API-sid. Solr'i võimsad välised konfiguratsioonivõimalused võimaldavad kohandada paljusid rakendusi ilma Java kodeerimiseta. Solril on pluginaarhitektuur, mis toetab keerukamat kohandamist.
Kuna 2010. aastal ühinesid Apache Lucene ja Apache Solr projektid, lõid ja rakendasid mõlemad projektid sama Apache Software Foundationi arendusmeeskond. Tehnoloogia või toodete osas on Lucene/Solr või Solr/Lucene sama.
Solr'i plussid ja miinused:
Merit
- Solril on suurem ja küpsem kasutajate, arendajate ja panustajate kogukond.
- Toetab indeksite lisamist mitmes formaadis, nagu HTML, PDF, Microsoft Office'i tarkvaravormingud ja lihttekstivormingud nagu JSON, XML, CSV jne.
- Solr on suhteliselt küps ja stabiilne.
- Otsingut indekseerimise ajal ei arvestata ja kiirus on kiirem.
Puudus
- Kui indeks on kehtestatud, väheneb otsingu efektiivsus ning reaalajas indeksi otsingu efektiivsus ei ole kõrge.
Elasticsearch vs Solr*
Solr on kiirem lihtsalt olemasolevate andmete otsimisel.
Reaalajas indekseerimisel põhjustab Solr IO blokeerimist ja kehva päringute jõudlust, mis on Elasticsearchil selge eelis.
Andmete hulga suurenedes langeb Solr'i otsingutõhusus, samas kui Elasticsearch ei muutu oluliselt.
Kokkuvõttes ei sobi Solr'i arhitektuur reaalajas otsingurakendusteks.
Reaalse maailma tootmistestid*
Allolev joonis näitab keskmise päringukiiruse 50-kordset kasvu pärast üleminekut Solrilt Elasticsearchile.
Elasticsearchi ja Solr'i võrdluse kokkuvõte
- Mõlemad on lihtsad paigaldada;
- Solr kasutab hajutatud haldamiseks Zookeeperit, samas kui Elasticsearch ise pakub hajutatud orkestreerimise haldust;
- Solr toetab rohkem andmevorminguid, samas kui Elasticsearch toetab ainult JSON-failivorminguid;
- Solr pakub ametlikult rohkem funktsioone, samas kui Elasticsearch ise keskendub rohkem põhifunktsioonidele ning keerukaid funktsioone pakuvad peamiselt kolmanda osapoole pluginad.
- Solr ületab Elasticsearchi traditsioonilistes otsingurakendustes, kuid on reaalajas otsingurakenduste käsitlemisel oluliselt vähem efektiivne kui Elasticsearch.
- Solr on võimas lahendus traditsioonilistele otsingurakendustele, kuid Elasticsearch sobib paremini uute reaalajas otsingurakenduste jaoks.
Teised Lucene-põhised avatud lähtekoodiga otsingumootori lahendused*
1: Kasuta Lucene'i otse
Märkus: Lucene on JAVA otsinguteek, mis iseseisvalt ei ole täielik lahendus ja vajab täiendavat arendustööd.
Eelised: Küps lahendus, millel on palju edukaid juhtumeid. Apache tipptasemel projektid, mis arenevad kiiresti edasi. Suur ja aktiivne arenduskogukond, suur hulk arendajaid. See on lihtsalt klassiraamatukogu, millel on piisavalt ruumi kohandamiseks ja optimeerimiseks: lihtsa kohandamise järel suudab see vastata enamikele tavalistele vajadustele; Optimeeritud toetama 1 miljardi+ otsingut.
Miinused: Nõuab täiendavat arendustööd. Kõik skaleerimine, jaotus, töökindlus jne tuleb ise rakendada; Mitte-reaalajas on indekseerimise ja otsingu vahel ajaline viivitus, ning praeguse "Lucene Near Real Time search" otsinguskeemi skaleeritavust tuleb veelgi parandada
Hüperlingi sisselogimine on nähtav.
2:Katta
Märkus: Lucene-põhine tugi toetab hajutatud, skaleeritavat, riketaluvat ja peaaegu reaalajas otsinguskeemi.
Plussid: Jagatud karbist välja koos Hadoopiga. Sellel on skaleerimis- ja riketaluvuse mehhanism.
Puudused: See on lihtsalt otsingulahendus ja indekseerimise osa tuleb ikkagi ise rakendada. Otsingufunktsiooni mõttes realiseeruvad ainult kõige põhilisemad vajadused. Edulugusid on vähem ja projekti küpsus on veidi madalam. Kuna see peab toetama levitamist, on keeruline kohandada keeruliste päringute nõudeid.
Hüperlingi sisselogimine on nähtav.
3:Hadoop panustamine/indeks
Märkus: Map/Reduce režiim, hajutatud indekseerimislahendus, saab kasutada koos Kattaga.
Eelised: hajutatud indekseerimine ja skaleeritavus.
Puudused: ainult indekseerimisskeem, mitte otsingu rakendus. Töötab partiirežiimis, kuid reaalajas otsingu tugi on kehv.
Hüperlingi sisselogimine on nähtav.
4: LinkedIni avatud lähtekoodiga lahendus
Kirjeldus: Lucene'il põhinevad lahendused, sealhulgas Zoie peaaegu reaalajas otsinguks, Bobo fasettide otsinguks, Decomposer masinõppe algoritmide jaoks, Krati kokkuvõtete hoidlate jaoks, Sensei andmebaasi skeemide pakkimiseks ja palju muud
Eelised: Tõestatud lahendus, mis toetab hajutatud, skaleeritavat ja rikkalikku funktsioonide rakendamist
Miinused: Liiga tihedalt seotud LinkedIni ettevõttega ja kehv kohandatavus
Hüperlingi sisselogimine on nähtav.
5:Lucandra
Märkus: Lucene põhjal eksisteerib indeks Cassandra andmebaasis
Plussid: Viide Cassandra eelistele
Miinused: Viita Cassandra puudustele. Samuti on see alles demo ja seda pole põhjalikult kontrollitud
Hüperlingi sisselogimine on nähtav.
6:HBasene
Märkus: Lucene'i põhjal eksisteerib indeks HBase andmebaasis
Eelised: Vaata HBase eeliseid
Puudused: Vaata HBase puudusi. Samuti salvestatakse teostuses luseeni terminid ridadena, kuid iga termini postitusloendid salvestatakse veergudena. Kuna ühe semestri postituste nimekirjade arv kasvab, mõjutab päringu kiirus oluliselt
Hüperlingi sisselogimine on nähtav.
7: Xunsearch
Märkus: Xunsearch rakendab struktureeritud hierarhilist disaini, mis hõlmab tagateenuseid ja front-end arenduspakette, selgete hierarhiate ja ilma lõikumiseta. Taustsüsteem on deemon, mis on kirjutatud C/C++ keeles, samas kui frontend kasutab PHP-d, mis on kõige populaarsem skriptikeel ja on veebipõhiste otsinguprojektide jaoks mugavam. Lisateabe saamiseks vaata Arhitektuuri disain.
Hüperlingi sisselogimine on nähtav.
|