Hakukonevalinnan tutkimusdokumentti
Johdanto Elasticsearchiin*
Elasticsearch on reaaliaikainen hajautettu haku- ja analytiikkakone. Se auttaa käsittelemään laajamittaista dataa nopeammin kuin koskaan aiemmin.
Sitä voi käyttää kokotekstihakuun, strukturoituun hakuun ja analytiikkaan, ja tietenkin voit yhdistää kaikki kolme.
Elasticsearch on hakukone, joka perustuu kokotekstihakukoneeseen Apache Lucene™, jota voidaan pitää nykyisin edistyneimpänä ja tehokkaimpana avoimen lähdekoodin hakukonekehyksenä.
Mutta Lucene on vain kehys, ja hyödyntääksesi sen ominaisuuksia täysimääräisesti sinun täytyy käyttää JAVA:ta ja integroida Lucene ohjelmaasi. Sen ymmärtäminen vaatii paljon oppimista, ja Lucene on todella monimutkainen.
Elasticsearch käyttää Lucenea sisäisenä moottorinaan, mutta täystekstihakuun tarvitset vain yhtenäistä API:ta ymmärtämättä sen monimutkaisia Lucene-toimintaperiaatteita.
Tietenkään Elasticsearch ei ole yhtä yksinkertainen kuin Lucene, se sisältää paitsi koko tekstin hakutoiminnot, myös seuraavat tehtävät:
- Hajautettu reaaliaikainen tiedostojen tallennus ja jokaisen kentän indeksointi, jotta ne voidaan hakea.
- Hajautettu hakukone, jossa on reaaliaikainen analytiikka.
- Se voi skaalautua satoihin palvelimiin käsittelemään petatavuja rakenteellista tai jäsentämätöntä dataa.
Koska niin monta ominaisuutta on integroitu yhteen palvelimeen, voit helposti kommunikoida ES:n RESTful-rajapinnan kanssa asiakkaan tai minkä tahansa haluamasi ohjelmointikielen kautta.
Elasticsearchin aloittaminen on hyvin yksinkertaista. Siihen liittyy paljon hyvin järkeviä oletusarvoja, mikä tekee siitä hyvän tavan aloittelijoille välttää monimutkaisten teorioiden käsittely heti aloittaessaan.
Se on asennettu ja käyttövalmis, ja se voi olla erittäin tuottava pienellä oppimiskustannuksella.
Kun opit lisää, voit myös hyödyntää Elasticsearchin kehittyneempiä ominaisuuksia, ja koko moottori voidaan konfiguroida joustavasti. Voit räätälöidä oman Elasticsearchisi tarpeidesi mukaan.
Käyttötapaukset:
- Wikipedia käyttää Elasticsearchia koko tekstin hakuihin ja avainsanojen korostamiseen sekä hakuehdotuksiin, kuten haku kirjoitushetkellä ja tarkoititko.
- The Guardian käyttää Elasticsearchia kävijälokien käsittelyyn, jotta toimittajat voivat saada tietoa yleisön reaktioista eri artikkeleihin.
- StackOverflow yhdistää kokotekstihaun paikannukseen ja relevanttiin tietoon tarjotakseen edustuksen kysymyksistä, jotka liittyvät enemmän tähän.
- GitHub käyttää Elasticsearchia yli 130 miljardin koodirivin hakemiseen.
- Joka päivä Goldman Sachs käyttää sitä indeksoidakseen 5TB dataa, ja monet investointipankit analysoivat osakemarkkinoiden liikkeitä.
Mutta Elasticsearch ei ole vain suuryrityksille, vaan se on auttanut monia startup-yrityksiä kuten DataDog ja Klout laajentamaan osaamistaan.
Elasticsearchin hyvät ja huonot puolet**:
ansio
- Elasticsearch on hajautettu. Muita komponentteja ei tarvita, ja jakelu tapahtuu reaaliaikaisesti, eli "push-replikaationa".
- Elasticsearch tukee täysin lähes reaaliaikaista hakua Apache Lucenella.
- Monikäyttöjärjestelmän käsittely ei vaadi erityisiä asetuksia, kun taas Solr vaatii kehittyneempiä asetuksia.
- Elasticsearch käyttää Gateway-konseptia helpottaakseen varmuuskopiointia.
- Jokainen solmu muodostaa tasavertaisen verkkorakenteen, ja kun jotkut solmut epäonnistuvat, muut solmut määrätään automaattisesti työskentelemään niiden tilalle.
puute
- Vain yksi kehittäjä (nykyinen Elasticsearch GitHub -organisaatio on enemmän kuin se, sillä on jo melko aktiivisia ylläpitäjiä)
- Ei tarpeeksi automaattinen (ei sovi nykyiseen uuteen Index Warmup API:iin)
Tietoa Solrista*
Solr (lausutaan "aurinko") on avoimen lähdekoodin yrityshakualusta Apache Lucene -projektille. Sen pääominaisuuksia ovat kokotekstihaku, osumamerkinnät, fasettihaku, dynaaminen klusterointi, tietokantaintegraatio ja rikastetun tekstin (esim. Word, PDF) käsittely. Solr on erittäin skaalautuva ja tarjoaa hajautetun haun ja indeksin replikoinnin. Solr on suosituin yritystason hakukone, ja Solr4 lisää myös NoSQL-tuen.
Solr on itsenäinen, kokotekstihakupalvelin, joka on kirjoitettu Javalla ja toimii servlet-kontilla, kuten Apache Tomcat tai Jetty. Solr käyttää Lucene Java -hakukirjastoa ytimenä täystekstin indeksointiin ja hakuun, ja siinä on REST-tyyppiset HTTP/XML- ja JSON-rajapinnat. Solrin tehokkaat ulkoiset konfigurointiominaisuudet tekevät sopeutumisesta monenlaisiin sovelluksiin helppoa ilman Java-koodausta. Solrilla on lisäosa-arkkitehtuuri, joka tukee kehittyneempää räätälöintiä.
Koska Apache Lucene ja Apache Solr -projektit yhdistyivät vuonna 2010, nämä kaksi projektia loi ja toteutti sama Apache Software Foundationin kehitystiimi. Teknologian tai tuotteiden osalta Lucene/Solr tai Solr/Lucene on sama asia.
Solrin hyvät ja huonot puolet:
ansio
- Solrilla on suurempi ja kypsempi käyttäjä-, kehittäjä- ja osallistujayhteisö.
- Tukee indeksien lisäämistä useissa muodoissa, kuten HTML, PDF, Microsoft Office -ohjelmistomuodot sekä selväkieliset muodot kuten JSON, XML, CSV jne.
- Solr on suhteellisen kypsä ja vakaa.
- Haku indeksoinnin aikana ei ole huomioitu, ja nopeus on nopeampi.
puute
- Kun indeksi on luotu, haun tehokkuus heikkenee, eikä reaaliaikaisen indeksin hakutehokkuus ole korkea.
Elasticsearch vs Solr*
Solr on nopeampi pelkästään olemassa olevien tietojen etsimisessä.
Reaaliaikaisessa indeksoinnissa Solr aiheuttaa IO-estoa ja heikkoa kyselysuorituskykyä, mikä Elasticsearchilla on selvä etu.
Kun datamäärä kasvaa, Solrin hakutehokkuus heikkenee, kun taas Elasticsearch ei muutu merkittävästi.
Yhteenvetona Solrin arkkitehtuuri ei sovellu reaaliaikaisiin hakusovelluksiin.
Todellisen maailman tuotantotestaus*
Alla oleva kuva näyttää keskimääräisen kyselynopeuden 50-kertaisen kasvun Solrista Elasticsearchiin siirtymisen jälkeen.
Yhteenveto Elasticsearchin ja Solrin vertailusta
- Molemmat ovat helppoja asentaa;
- Solr hyödyntää Zookeeperia hajautettuun hallintaan, kun taas Elasticsearch itse tarjoaa hajautetun orkestroinnin hallintaa;
- Solr tukee useampia datamuotoja, kun taas Elasticsearch tukee vain JSON-tiedostomuotoja;
- Solr tarjoaa virallisesti enemmän ominaisuuksia, kun taas Elasticsearch keskittyy enemmän ydintoimintoihin, ja edistyneitä toimintoja tarjoavat pääasiassa kolmannen osapuolen lisäosat.
- Solr päihittää Elasticsearchin perinteisissä hakusovelluksissa, mutta on merkittävästi vähemmän tehokas kuin Elasticsearch reaaliaikaisissa hakusovelluksissa.
- Solr on tehokas ratkaisu perinteisiin hakusovelluksiin, mutta Elasticsearch sopii paremmin nouseviin reaaliaikaisiin hakusovelluksiin.
Muut Lucene-pohjaiset avoimen lähdekoodin hakukoneratkaisut*
1: Käytä Lucenea suoraan
Huomautus: Lucene on JAVA-hakukirjasto, joka ei ole yksinään täydellinen ratkaisu ja vaatii lisäkehitystyötä.
Edut: Kypsä ratkaisu, jossa on monia onnistuneita tapauksia. Apache-huipputason projektit, jotka etenevät nopeasti. Suuri ja aktiivinen kehitysyhteisö, suuri määrä kehittäjiä. Se on vain luokkakirjasto, jossa on riittävästi tilaa räätälöintiin ja optimointiin: yksinkertaisen muokkauksen jälkeen se pystyy vastaamaan yleisimpiin tarpeisiin; Optimoitu tukemaan 1 miljardi+ hakua.
Miinukset: Vaatii lisäkehitystyötä. Kaikki skaalaus, jakelu, luotettavuus jne. täytyy toteuttaa itse; Ei-reaaliajassa indeksoinnin ja haun välillä on viive, ja nykyisen "Lucene Near Real Time search" -hakujärjestelmän skaalautuvuutta on parannettava entisestään
Hyperlinkin kirjautuminen on näkyvissä.
2:Katta
Huomautus: Lucene-pohjainen tukee hajautettua, skaalautuvaa, vikasietokykyistä ja lähes reaaliaikaista hakujärjestelmää.
Plussat: Jaettu suoraan Hadoopin kanssa. Siinä on skaalaus- ja vikasietomekanismi.
Haitat: Se on vain hakuratkaisu, ja indeksointi täytyy silti toteuttaa itse. Hakutoiminnon osalta toteutuvat vain perustavanlaatuiset tarpeet. Menestystarinoita on vähemmän ja projektin kypsyys on hieman alhaisempi. Koska sen täytyy tukea jakelua, monimutkaisten kyselyvaatimusten mukauttaminen on vaikeaa.
Hyperlinkin kirjautuminen on näkyvissä.
3:Hadoop contrib/index
Huomautus: Kartta/Reduce-tilaa, hajautettua indeksointiratkaisua, voidaan käyttää Katan kanssa.
Edut: Hajautettu indeksointi ja skaalautuvuus.
Haitat: Vain indeksointijärjestelmä, ei hakutoiminto. Toimii erätilassa, mutta reaaliaikaisen haun tuki on heikko.
Hyperlinkin kirjautuminen on näkyvissä.
4: LinkedInin avoimen lähdekoodin ratkaisu
Kuvaus: Valikoima Lucene-pohjaisia ratkaisuja, mukaan lukien Zoie lähes reaaliaikaiseen hakuun, Bobo fasettihakuun, Decomposer koneoppimisalgoritmeihin, Krati yhteenvetotietovarastoihin, Sensei tietokantojen skeeman kääreilyyn ja paljon muuta
Edut: Todistettu ratkaisu, joka tukee hajautettua, skaalautuvaa ja monipuolista ominaisuuksien toteutusta
Miinukset: Liian läheinen yhteys LinkedIn-yritykseen ja huono muokattavuus
Hyperlinkin kirjautuminen on näkyvissä.
5:Lucandra
Huomautus: Lucenen perusteella indeksi on olemassa Cassandra-tietokannassa
Plussat: Viittaa Cassandran eduihin
Miinukset: Viittaa Cassandran haitoihin. Lisäksi tämä on vain demo eikä sitä ole perusteellisesti vahvistettu
Hyperlinkin kirjautuminen on näkyvissä.
6:HBasene
Huomautus: Lucenen perusteella indeksi löytyy HBase-tietokannasta
Hyödyt: Tutustu HBaasin eduihin
Haitat: Viittaa HBaasin haitoihin. Lisäksi toteutuksessa luseeniset termit tallennetaan riveinä, mutta kunkin termin julkaisulistat tallennetaan sarakkeina. Kun yhden lukukauden julkaisulistojen määrä kasvaa, kyselyn nopeus heikkenee merkittävästi
Hyperlinkin kirjautuminen on näkyvissä.
7: Xunsearch
Huomautus: Xunsearch käyttää rakenteellista hierarkkista rakennetta, mukaan lukien backend-palvelut ja front-end-kehityspaketit, selkeät hierarkiat ja ilman leikkauspisteitä. Taustajärjestelmä on daemon, joka on kirjoitettu C/C++:lla, kun taas frontend käyttää PHP:tä, suosituinta skriptikieltä, joka on kätevämpi verkkohakuprojekteissa. Lisätietoja löytyy kohdasta Arkkitehtuurin suunnittelu.
Hyperlinkin kirjautuminen on näkyvissä.
|