Paieškos sistemų atrankos tyrimo dokumentas
Įvadas į "Elasticsearch"*
"Elasticsearch" yra realiuoju laiku paskirstyta paieškos ir analizės sistema. Tai padeda apdoroti didelio masto duomenis greičiau nei bet kada anksčiau.
Jis gali būti naudojamas viso teksto paieškai, struktūrizuotai paieškai ir analizei, ir, žinoma, galite derinti visus tris.
"Elasticsearch" yra paieškos sistema, sukurta viso teksto paieškos sistemos "Apache Lucene™" pagrindu, kuri, galima sakyti, yra pažangiausia ir efektyviausia šiandien prieinama atvirojo kodo paieškos sistema.
Tačiau "Lucene" yra tik sistema, o norint išnaudoti visas jos funkcijas, reikia naudoti JAVA ir integruoti "Lucene" į savo programą. Reikia daug mokytis, kad suprastum, kaip tai veikia, o Lucene yra tikrai sudėtinga.
"Elasticsearch" naudoja "Lucene" kaip vidinį variklį, tačiau naudojant jį viso teksto paieškai, reikia naudoti tik vieningą API, nesuprantant sudėtingų "Lucene" veikimo principų.
Žinoma, "Elasticsearch" yra ne tik tokia paprasta kaip "Lucene", ji ne tik apima viso teksto paieškos funkcijas, bet ir gali atlikti šias užduotis:
- Paskirstyta failų saugykla realiuoju laiku ir indeksavimas kiekviename lauke, kad būtų galima ieškoti.
- Paskirstyta paieškos sistema su realiojo laiko analize.
- Jis gali būti išplėstas iki šimtų serverių, kad būtų galima apdoroti petabaitus struktūrizuotų ar nestruktūrizuotų duomenų.
Turėdami tiek daug funkcijų, integruotų į vieną serverį, galite lengvai susisiekti su ES RESTful API per klientą arba bet kurią pageidaujamą programavimo kalbą.
Pradėti naudotis "Elasticsearch" yra labai paprasta. Jame yra daug labai pagrįstų numatytųjų nustatymų, todėl pradedantiesiems tai yra geras būdas išvengti sudėtingų teorijų vos pradėjus.
Jis įdiegtas ir paruoštas naudoti, be to, jis gali būti labai produktyvus su nedidelėmis mokymosi sąnaudomis.
Sužinoję daugiau, taip pat galite pasinaudoti pažangesnėmis "Elasticsearch" funkcijomis, o visą variklį galima lanksčiai konfigūruoti. Galite pritaikyti savo "Elasticsearch" pagal savo poreikius.
Naudojimo atvejai:
- Vikipedija naudoja "Elasticsearch", kad atliktų viso teksto paieškas ir paryškintų raktinius žodžius, taip pat paieškos pasiūlymus, tokius kaip paieška pagal tekstą ir ar turėjai omenyje.
- "The Guardian" naudoja "Elasticsearch" lankytojų žurnalams apdoroti, kad redaktoriai galėtų būti informuoti apie visuomenės reakcijas į įvairius straipsnius realiu laiku.
- "StackOverflow" sujungia viso teksto paiešką su geografine vieta ir atitinkama informacija, kad pateiktų klausimus, susijusius su panašesniais dalykais.
- "GitHub" naudoja "Elasticsearch", kad gautų daugiau nei 130 milijardų kodo eilučių.
- Kiekvieną dieną "Goldman Sachs" jį naudoja 5 TB duomenims indeksuoti, o daugelis investicinių bankų juos naudoja akcijų rinkos pokyčiams analizuoti.
Tačiau "Elasticsearch" skirta ne tik didelėms įmonėms, bet ir padėjo daugeliui startuolių, tokių kaip "DataDog" ir "Klout", išplėsti savo galimybes.
"Elasticsearch" privalumai ir trūkumai**:
Nuopelnus
- "Elasticsearch" platinama. Jokių kitų komponentų nereikia, o platinimas vyksta realiuoju laiku, žinomas kaip "Push replication".
- "Elasticsearch" visiškai palaiko beveik realiojo laiko paiešką naudojant "Apache Lucene".
- Norint tvarkyti daugianuomą, nereikia specialios konfigūracijos, o Solr reikia pažangesnių nustatymų.
- "Elasticsearch" naudoja šliuzo koncepciją, kad būtų lengviau kurti atsargines kopijas.
- Kiekvienas mazgas sudaro vienodą tinklo struktūrą, o kai kurie mazgai sugenda, kiti mazgai automatiškai priskiriami dirbti jų vietoje.
Trūkumas
- Tik vienas kūrėjas (dabartinė "Elasticsearch GitHub" organizacija yra daugiau, ji jau turi gana aktyvius prižiūrėtojus)
- Nepakankamai automatinis (netinka dabartinei naujai indekso apšilimo API)
Apie Solr*
Solr (tariama "saulės") yra atvirojo kodo įmonių paieškos platforma, skirta Apache Lucene projektui. Pagrindinės jo funkcijos yra viso teksto paieška, paspaudimų žymėjimas, briaunota paieška, dinaminis klasterizavimas, duomenų bazių integravimas ir raiškiojo teksto (pvz., Word, PDF) apdorojimas. "Solr" yra labai keičiamo dydžio ir teikia paskirstytą paiešką bei indeksų replikavimą. Solr yra populiariausias įmonės lygio paieškos variklis, o Solr4 taip pat prideda NoSQL palaikymą.
Solr yra atskiras viso teksto paieškos serveris, parašytas Java, veikiantis servlet konteineryje, pvz., Apache, Tomcat arba Jetty. Solr naudoja Lucene Java paieškos biblioteką kaip viso teksto indeksavimo ir paieškos branduolį ir turi REST tipo HTTP/XML ir JSON API. Galingos Solr išorinės konfigūracijos galimybės leidžia lengvai prisitaikyti prie daugelio tipų programų be Java kodavimo. "Solr" turi papildinio architektūrą, palaikančią pažangesnį tinkinimą.
2010 m. sujungus "Apache Lucene" ir "Apache Solr" projektus, abu projektus sukūrė ir įgyvendino ta pati "Apache Software Foundation" kūrėjų komanda. Kalbant apie technologijas ar produktus, Lucene/Solr arba Solr/Lucene yra tas pats.
"Solr" privalumai ir trūkumai:
Nuopelnus
- Solr turi didesnę ir brandesnę vartotojų, kūrėjų ir bendraautorių bendruomenę.
- Palaikykite indeksų pridėjimą keliais formatais, pvz., HTML, PDF, Microsoft Office programinės įrangos formatais ir paprasto teksto formatais, tokiais kaip JSON, XML, CSV ir kt.
- Solr yra gana brandus ir stabilus.
- Paieška indeksuojant neatsižvelgiama, o greitis yra didesnis.
Trūkumas
- Nustačius indeksą, paieškos efektyvumas sumažėja, o realaus laiko indekso paieškos efektyvumas nėra didelis.
Elasticsearch vs Solr*
Solr yra greitesnis, kai tiesiog ieško esamų duomenų.
Indeksuojant realiuoju laiku, "Solr" sukels IO blokavimą ir prastą užklausų našumą, o tai "Elasticsearch" turi aiškų pranašumą.
Didėjant duomenų kiekiui, "Solr" paieškos efektyvumas mažėja, o "Elasticsearch" reikšmingai nesikeičia.
Apibendrinant galima pasakyti, kad "Solr" architektūra netinka paieškos realiuoju laiku programoms.
Gamybos testavimas realiomis sąlygomis*
Žemiau esančiame paveikslėlyje parodytas 50 kartų padidėjęs vidutinis užklausos greitis perėjus iš "Solr" į "Elasticsearch".
"Elasticsearch" ir "Solr" palyginimo santrauka
- Abu yra lengvai montuojami;
- "Solr" naudoja "Zookeeper" paskirstytam valdymui, o pati "Elasticsearch" turi paskirstytą orkestravimo valdymą;
- Solr palaiko daugiau duomenų formatų, o Elasticsearch palaiko tik JSON failų formatus;
- "Solr" oficialiai teikia daugiau funkcijų, o pati "Elasticsearch" daugiau dėmesio skiria pagrindinėms funkcijoms, o išplėstines funkcijas dažniausiai teikia trečiųjų šalių papildiniai.
- "Solr" lenkia "Elasticsearch" tradicinėse paieškos programose, tačiau yra žymiai mažiau efektyvi nei "Elasticsearch" tvarkant paieškos programas realiuoju laiku.
- "Solr" yra galingas sprendimas tradicinėms paieškos programoms, tačiau "Elasticsearch" geriau tinka naujoms paieškos realiuoju laiku programoms.
Kiti "Lucene" atvirojo kodo paieškos sistemų sprendimai*
1: Naudokite Lucene tiesiogiai
Pastaba: "Lucene" yra JAVA paieškos biblioteka, kuri nėra išsamus sprendimas ir reikalauja papildomų kūrimo pastangų.
Privalumai: Brandus sprendimas su daugybe sėkmingų atvejų. "Apache" aukščiausio lygio projektai, kurie ir toliau sparčiai tobulėja. Didelė ir aktyvi kūrėjų bendruomenė, didelis kūrėjų skaičius. Tai tik klasių biblioteka, kurioje yra pakankamai vietos pritaikymui ir optimizavimui: po paprasto pritaikymo ji gali patenkinti dažniausiai pasitaikančius poreikius; Optimizuota palaikyti 1 milijardą + paieškų.
Trūkumai: Reikia papildomų kūrimo pastangų. Visą mastelio keitimą, paskirstymą, patikimumą ir kt. turite įgyvendinti patys; Ne realiuoju laiku tarp indeksavimo ir paieškos yra laiko uždelsimas, todėl reikia toliau tobulinti dabartinės paieškos schemos "Lucene Near Real Time search" mastelio keitimą
Hipersaito prisijungimas matomas.
2:Katta
Pastaba: Lucene pagrįsta parama paskirstyta, keičiamo dydžio, gedimams atspari, beveik realaus laiko paieškos schema.
Argumentai "už": Platinama iš dėžutės su "Hadoop". Jis turi mastelio keitimo ir gedimų tolerancijos mechanizmą.
Trūkumai: Tai tik paieškos sprendimas, o indeksavimo dalį vis tiek turite įgyvendinti patys. Kalbant apie paieškos funkciją, realizuojami tik patys elementariausi poreikiai. Sėkmės istorijų yra mažiau, o projekto branda yra šiek tiek žemesnė. Kadangi jis turi palaikyti platinimą, jį bus sunku pritaikyti kai kuriems sudėtingiems užklausų reikalavimams.
Hipersaito prisijungimas matomas.
3:Hadoop indėlis / indeksas
Pastaba: Map/Reduce režimas, paskirstytas indeksavimo sprendimas, gali būti naudojamas su Katta.
Privalumai: paskirstytas indeksavimas ir mastelio keitimas.
Trūkumai: Tik indeksavimo schema, o ne paieškos įgyvendinimas. Veikia paketiniu režimu su prastu paieškos realiuoju laiku palaikymu.
Hipersaito prisijungimas matomas.
4: "LinkedIn" atvirojo kodo sprendimas
Aprašymas: Įvairūs sprendimai, pagrįsti Lucene, įskaitant "Zoie" paieškai beveik realiuoju laiku, "Bobo" aspektų paieškai, "Defoam" mašininio mokymosi algoritmams, "Krati" apibendrinimo saugykloms, "Sensei" duomenų bazių schemų vyniojimui ir kt
Privalumai: Patikrintas sprendimas, palaikantis paskirstytą, keičiamo dydžio ir turtingų funkcijų diegimą
Trūkumai: Per glaudžiai susijęs su "LinkedIn" įmone ir prastas pritaikymas
Hipersaito prisijungimas matomas.
5:Lucandra
Pastaba: Remiantis Lucene, indeksas yra kasandros duomenų bazėje
Argumentai "už": Atkreipkite dėmesį į "Cassandra" privalumus
Trūkumai: Atkreipkite dėmesį į Cassandra trūkumus. Be to, tai tik demonstracinė versija ir nebuvo labai patikrinta
Hipersaito prisijungimas matomas.
6: HBasene
Pastaba: Remiantis Lucene, indeksas yra HBase duomenų bazėje
Privalumai: Peržiūrėkite HBase privalumus
Trūkumai: Atkreipkite dėmesį į HBase trūkumus. Be to, įgyvendinant lucene terminai saugomi kaip eilutės, tačiau kiekvieną terminą atitinkantys registravimo sąrašai saugomi kaip stulpeliai. Augant vienos kadencijos skelbimų sąrašų skaičiui, užklausos greitis bus labai paveiktas
Hipersaito prisijungimas matomas.
7: Xunsearch
Pastaba: "Xunsearch" priima struktūrizuotą hierarchinį dizainą, įskaitant vidines paslaugas ir priekinės dalies kūrimo paketus, su aiškiomis hierarchijomis ir be susikirtimo. Užpakalinė dalis yra demonas, parašytas C/C++, o priekinė dalis naudoja PHP, populiariausią scenarijų kalbą, kuri yra patogesnė žiniatinklio paieškos projektams. Išsamesnės informacijos ieškokite Architektūros projektavimas.
Hipersaito prisijungimas matomas.
|