Keresőmotor-kiválasztási kutatási dokumentum
Bevezetés az Elasticsearch-hez*
Az Elasticsearch egy valós idejű, elosztott kereső- és analitikai motor. Segít gyorsabban feldolgozni a nagyszabású adatokat, mint valaha.
Használható teljes szöveges keresésre, strukturált keresésre és elemzésre, és természetesen mindhárom kombinációt kombinálhatod.
A Elasticsearch egy teljes szöveges Apache Lucene™ keresőmotorra épült, amelyet a ma legfejlettebb és leghatékonyabb, teljes funkciójú nyílt forráskódú keresőmotor-keretrendszernek nevezhetünk.
De a Lucene csak egy keretrendszer, és hogy teljes mértékben kihasználd a funkcióit, a JAVA-t kell használnod, és integrálnod kell a Lucene-t a programodba. Sok tanulás kell ahhoz, hogy megértsük, hogyan működik, és Lucene tényleg bonyolult.
Az Elasticsearch a Lucene-t használja belső motorjaként, de teljes szöveges keresésnél csak egy egységes API-t kell használni, anélkül, hogy megértened a Lucene mögött álló összetett működési elveket.
Természetesen az Elasticsearch nemcsak olyan egyszerű, mint a Lucene, nemcsak teljes szöveges keresőfunkciókat tartalmaz, hanem a következő feladatokat is képes ellátni:
- Elosztott valós idejű fájltárolás és minden mező indexelése lehetővé teszi, hogy kereshető legyen.
- Elosztott keresőmotor valós idejű analitikával.
- Több száz szerverre képes skálázni, hogy petabájtnyi strukturált vagy strukturálatlan adatot kezeljen.
Mivel ennyi funkció van integrálva egyetlen szerverre, könnyen kommunikálhatsz az ES RESTful API-jával a kliensen vagy bármelyik kedvenc programozási nyelveden keresztül.
A Elasticsearch elkezdése nagyon egyszerű. Sok nagyon ésszerű alapértelmezéssel jár, ami jó módja annak, hogy a kezdők számára elkerüljék a bonyolult elméletekkel való foglalkozást rögtön a kezdetükben.
Be van szerelve és használatra kész, és nagyon produktív lehet kis tanulási költséggel.
Ahogy többet tudsz meg, kihasználhatod az Elasticsearch fejlettebb funkcióit is, és az egész motor rugalmasan konfigurálható. Saját Elasticsearch-ed testreszabható az igényeidhez.
Felhasználási esetek:
- A Wikipédia a Elasticsearch-et használja teljes szöveges keresésekre és kulcsszavak kiemelésére, valamint olyan keresési javaslatokra, mint például a keresés, ahogy gépelsz vagy mire gondoltál.
- A Guardian a Elasticsearch-et használja a látogatói naplók feldolgozására, így a szerkesztők valós időben értesülhetnek a különböző cikkekre adott nyilvános reakciókról.
- A StackOverflow ötvözi a teljes szöveges keresést a földhelymeghatározással és releváns információkkal, hogy a hasonlókhoz kapcsolódó kérdéseket reprezentálja.
- A GitHub a Elasticsearch-et használja több mint 130 milliárd sor kód lekérésére.
- A Goldman Sachs naponta 5TB adatindexet használ, és sok befektetési bank is használja fel tőzsdei mozgások elemzésére.
De a Elasticsearch nemcsak nagyvállalatoknak szól, hanem sok startupnak, mint a DataDog és a Klout, segítette képességeik bővítését is.
Az Elasticsearch előnyei és hátrányai**:
érdem
- A rugalmas keresés elosztott. Más komponensek nem szükségesek, és a forgalmazás valós idős, amit "Push replikációnak" neveznek.
- Az Elasticsearch teljes mértékben támogatja a közel valós idejű keresést az Apache Lucene-vel.
- A többbérlőség kezeléséhez nincs szükség speciális konfigurációra, míg a Solr fejlettebb beállításokra van szükség.
- Az Elasticsearch a Gateway koncepcióját használja, hogy könnyebb legyen a biztonsági mentés.
- Minden csomópont egyenlő hálózati struktúrát alkot, és amikor egyes csomópontok meghibásodik, automatikusan más csomópontokat rendelnek hozzájuk.
Hiány
- Csak egy fejlesztő (a jelenlegi Elasticsearch GitHub szervezet ennél több, már elég aktív karbantartói vannak)
- Nem elég automatikus (nem alkalmas a jelenlegi új Index Warmup API-hoz)
About Solr*
A Solr (kiejtve: "solar") egy nyílt forráskódú vállalati keresőplatform az Apache Lucene projekthez. Fő jellemzői közé tartozik a teljes szöveges keresés, a találatjelölés, a fazettált keresés, a dinamikus klaszterezés, az adatbázis-integráció és a gazdag szöveg (pl. Word, PDF) feldolgozása. A Solr rendkívül skálázható, és elosztott keresést és indexreplikációt biztosít. A Solr a legnépszerűbb vállalati szintű keresőmotor, és a Solr4 emellett NoSQL támogatást is hozzáad.
A Solr egy önálló, teljes szöveges keresőszerver, amely Java nyelven íródott, és egy servlet konténeren fut, például Apache Tomcat vagy Jetty. A Solr a Lucene Java keresőkönyvtárat használja magként a teljes szöveges indexeléshez és kereséshez, és REST-szerű HTTP/XML és JSON API-kkal rendelkezik. A Solr erőteljes külső konfigurációs képességei megkönnyítik a különféle alkalmazásokhoz való alkalmazkodást Java kódolás nélkül. A Solrnak van egy plugin architektúrája, amely támogatja a fejlettebb testreszabást.
Az Apache Lucene és az Apache Solr projektek 2010-es egyesülése miatt a két projektet ugyanaz az Apache Software Foundation fejlesztőcsapata hozta létre és valósította meg. A technológia vagy termékek terén a Lucene/Solr vagy a Solr/Lucene ugyanaz.
A Solr előnyei és hátrányai:
érdem
- A Solrnak nagyobb és érettebb felhasználói közössége van, ahol használói, fejlesztői és közreműködői állnak.
- Támogatja az indexek hozzáadását több formátumban, például HTML, PDF, Microsoft Office szoftverformátumok, valamint egyszerű szöveges formátumok, mint például JSON, XML, CSV stb.
- A Solr viszonylag érett és stabil.
- Az indexeléskor történő keresés nem számít, és a sebesség gyorsabb.
Hiány
- Amikor az index megalakul, a keresés hatékonysága csökken, és a valós idejű indexkeresés hatékonysága nem magas.
Elasticsearch vs Solr*
A Solr gyorsabb, ha egyszerűen a meglévő adatokat keresi.
Valós idejű indexelés esetén a Solr IO-blokkolást és gyenge lekérdezési teljesítményt okoz, ami az Elasticsearchnek egyértelmű előnye.
Ahogy az adatok mennyisége nő, a Solr keresési hatékonysága csökken, míg az Elasticsearch nem változik jelentősen.
Összefoglalva, a Solr architektúrája nem alkalmas valós idejű keresési alkalmazásokhoz.
Valós gyártási tesztek*
Az alábbi ábra 50-szeres növekedést mutat az átlagos lekérdezési sebességben, miután átváltunk Solrról Elasticsearchre.
Az Elasticsearch és a Solr összehasonlításának összefoglalása
- Mindkettő könnyen telepíthető;
- A Solr a Zookeeper-t használja az elosztott menedzsmenthez, míg maga a Elasticsearch elosztott orkestrációs menedzsmentet kínál;
- A Solr több adatformátumot támogat, míg az Elasticsearch csak JSON fájlformátumokat támogat;
- A Solr hivatalosan több funkciót kínál, míg maga az Elasticsearch inkább az alapvető funkciókra fókuszál, és a fejlett funkciókat főként harmadik féltől származó pluginok biztosítják.
- A Solr a hagyományos keresési alkalmazásokban felülmúlja az Elasticsearch-et, de valós idejű keresési alkalmazások kezelése során jelentősen kevésbé hatékony, mint az Elasticsearch.
- A Solr hatékony megoldás hagyományos keresőalkalmazásokhoz, de a Elasticsearch jobban illik a feltörekvő valós idejű keresési alkalmazásokhoz.
Egyéb Lucene-alapú nyílt forráskódú keresőmotor-megoldások*
1: Használd közvetlenül a Lucene-t
Megjegyzés: A Lucene egy JAVA keresőkönyvtár, amely önmagában nem teljes megoldás, és további fejlesztési erőfeszítést igényel.
Előnyök: Érett megoldás sok sikeres esettel. Apache csúcsszintű projektek, amelyek folyamatosan gyorsan fejlődnek. Nagy és aktív fejlesztői közösség, rengeteg fejlesztő. Ez csupán egy osztálykönyvtár, elegendő lehetőséggel a testreszabásra és optimalizálásra: egyszerű testreszabás után a legtöbb gyakori igényt képes kielégíteni; Optimalizálva, hogy 1 milliárd+ keresést támogassanak.
Hátrányok: További fejlesztési erőfeszítést igényel. Minden skálázást, elosztást, megbízhatóságot stb. magadnak kell megvalósítani; Nem valós időben időbeli késés van az indexelés és a keresés között, és a jelenlegi "Lucene Near Real Time search" keresési séma skálázhatóságát tovább kell javítani
A hiperlink bejelentkezés látható.
2:Katta
Megjegyzés: A Lucene-alapú támogat elosztott, skálázható, hibatűrő, közel valós idejű keresési rendszert.
Előnyök: Dobozból kiterjedt Hadoop-pal. Van egy skálázási és hibatűrő mechanizmusa.
Hátrányok: Ez csak egy keresési megoldás, és az indexelési részt még magadnak kell megvalósítanod. A keresési függvény szempontjából csak a legalapvetőbb igények teljesülnek meg. Kevesebb sikertörténet van, és a projekt érettsége kissé alacsonyabb. Mivel támogatnia kell a terjesztést, nehéz lesz testreszabni néhány összetett lekérdezési követelményhez.
A hiperlink bejelentkezés látható.
3:Hadoop hozzájárulás/index
Megjegyzés: A Katta-val használható a térkép/csökkentés mód, egy elosztott indexelési megoldás.
Előnyök: Elosztott indexelés és skálázhatóság.
Hátrányok: Csak az indexelési séma, nem a keresési megvalósítás. Batch módban működik, gyenge támogatással a valós idejű kereséshez.
A hiperlink bejelentkezés látható.
4: A LinkedIn nyílt forráskódú megoldása
Leírás: Lucene-alapú megoldások sor változata, beleértve a Zoie-t a közel valós idejű kereséshez, a Bobo-t a felületkereséshez, a Decomposert a gépi tanulási algoritmusokhoz, Krati az összefoglaló tárolókhoz, Sensei az adatbázis-séma csomagolásához és még sok más
Előnyök: Bizonyított megoldás, amely támogatja az elosztott, skálázható és gazdag funkciók megvalósítását
Hátrányok: Túl szoros kapcsolat a LinkedIn céggel és gyenge testreszabhatóság
A hiperlink bejelentkezés látható.
5: Lucandra
Megjegyzés: Lucene alapján az index a cassandra adatbázisban található
Előnyök: Ismerd meg Cassandra előnyeit
Hátrányok: Lásd Cassandra hátrányait. Ez csak egy demó, és nem volt erősen ellenőrizve
A hiperlink bejelentkezés látható.
6:HBasene
Megjegyzés: Lucene alapján az index a HBase adatbázisban létezik
Előnyök: Tekintse meg a HBáz előnyeit
Hátrányok: Lásd a HBáz hátrányait. A megvalósításban a lucén kifejezéseket sorokban tárolják, de az egyes kifejezésekhez tartozó bejegyzési listák oszlopokban tárolódnak. Ahogy egy ciklusra vonatkozó bejegyzési listák száma növekszik, a lekérdezés sebessége jelentősen megváltozik
A hiperlink bejelentkezés látható.
7: Xunsearch
Megjegyzés: A Xunsearch strukturált hierarchikus kialakítást alkalmaz, beleértve a backend szolgáltatásokat és front-end fejlesztő csomagokat, világos hierarchiával és metszések nélkül. A háttérrendszer egy C/C++ nyelvű démon, míg a frontend a PHP-t használja, amely a legnépszerűbb szkriptnyelv, és kényelmesebb webes keresési projektekhez. Részletekért lásd: Építészeti tervezés.
A hiperlink bejelentkezés látható.
|