Výskumný dokument o výbere vyhľadávača
Úvod do Elasticsearch*
Elasticsearch je nástroj na distribuované vyhľadávanie a analytiku v reálnom čase. Pomáha vám spracovávať veľké dáta rýchlejšie než kedykoľvek predtým.
Dá sa použiť na full-textové vyhľadávanie, štruktúrované vyhľadávanie a analytiku, a samozrejme môžete kombinovať všetky tri.
Elasticsearch je vyhľadávač postavený na plnotextovom vyhľadávači Apache Lucene™, ktorý možno považovať za najpokročilejší a najefektívnejší komplexný open source vyhľadávací framework dostupný dnes.
Ale Lucene je len framework a aby ste naplno využili jeho funkcie, musíte použiť JAVA a integrovať Lucene do svojho programu. Vyžaduje si to veľa učenia, kým pochopíte, ako to funguje, a Lucene je naozaj komplikovaný.
Elasticsearch používa Lucene ako svoj interný engine, ale pri fulltextovom vyhľadávaní stačí použiť jednotné API bez pochopenia zložitých princípov fungovania Lucene, ktoré za ním stoja.
Samozrejme, Elasticsearch nie je len taký jednoduchý ako Lucene, zahŕňa nielen funkcie vyhľadávania v plnom texte, ale dokáže vykonávať aj nasledujúce úlohy:
- Distribuované ukladanie súborov v reálnom čase a indexovanie každého poľa, aby bolo možné prehľadávať.
- Distribuovaný vyhľadávač s analytikou v reálnom čase.
- Dokáže škálovať na stovky serverov na spracovanie petabajtov štruktúrovaných alebo neštruktúrovaných dát.
S toľkými funkciami integrovanými do jedného servera môžete jednoducho komunikovať s RESTful API od ES cez klienta alebo ktorýkoľvek z vašich preferovaných programovacích jazykov.
Začať s Elasticsearch je veľmi jednoduché. Obsahuje veľa veľmi rozumných predvolených nastavení, čo z neho robí dobrý spôsob, ako sa začiatočníci vyhnúť zložitým teóriám hneď na začiatku.
Je nainštalovaný a pripravený na použitie a môže byť veľmi produktívny aj s malými nákladmi na učenie.
Ako sa budete učiť viac, môžete využiť aj pokročilejšie funkcie Elasticsearch a celý engine je možné flexibilne nakonfigurovať. Môžete si prispôsobiť vlastný Elasticsearch podľa svojich potrieb.
Prípady použitia:
- Wikipedia používa Elasticsearch na vyhľadávanie v plnom texte a zvýrazňovanie kľúčových slov, ako aj na vyhľadávacie návrhy ako vyhľadávanie pri písaní a did-you-mean.
- The Guardian používa Elasticsearch na spracovanie návštevníckych záznamov, aby redaktori mohli byť informovaní o reakciách verejnosti na rôzne články v reálnom čase.
- StackOverflow kombinuje vyhľadávanie v plnom texte s geolokáciou a relevantnými informáciami, aby poskytol reprezentáciu otázok súvisiacich s podobnými otázkami.
- GitHub používa Elasticsearch na získanie viac ako 130 miliárd riadkov kódu.
- Každý deň ho Goldman Sachs používa na indexovanie 5TB dát a mnohé investičné banky ho využívajú na analýzu pohybov akciového trhu.
Elasticsearch však nie je určený len pre veľké podniky, ale pomohol aj mnohým startupom ako DataDog a Klout rozšíriť ich schopnosti.
Výhody a nevýhody Elasticsearch**:
zásluha
- Elasticsearch je distribuovaný. Nie sú potrebné žiadne ďalšie komponenty a distribúcia prebieha v reálnom čase, známa ako "push replikácia".
- Elasticsearch plne podporuje takmer reálne vyhľadávanie s Apache Lucene.
- Spracovanie multitenancie nevyžaduje žiadnu špeciálnu konfiguráciu, zatiaľ čo Solr vyžaduje pokročilejšie nastavenia.
- Elasticsearch využíva koncept Gateway, aby uľahčil zálohovanie.
- Každý uzol tvorí rovnakú sieťovú štruktúru a keď niektoré uzly zlyhajú, iné uzly sú automaticky priradené na ich miesto.
nedostatok
- Len jeden vývojár (súčasná organizácia Elasticsearch na GitHube je viac než to, už má dosť aktívnych správcov)
- Nie je dostatočne automatické (nie je vhodné pre aktuálne nové API Index Warmup)
O Solr*
Solr (vyslovuje sa "solar") je open-source podniková vyhľadávacia platforma pre projekt Apache Lucene. Jej hlavné funkcie zahŕňajú vyhľadávanie v plnom texte, označovanie zásahov, facetové vyhľadávanie, dynamické zhlukovanie, integráciu databáz a spracovanie bohatého textu (napr. Word, PDF). Solr je vysoko škálovateľný a poskytuje distribuované vyhľadávanie a replikáciu indexov. Solr je najpopulárnejší podnikový vyhľadávač a Solr4 tiež pridáva podporu NoSQL.
Solr je samostatný fulltextový vyhľadávací server napísaný v Jave, ktorý beží na servlet kontajneri ako Apache Tomcat alebo Jetty. Solr používa vyhľadávaciu knižnicu Lucene Java ako jadro pre indexovanie a vyhľadávanie plného textu a má REST-like HTTP/XML a JSON API. Výkonné externé konfiguračné schopnosti Solr umožňujú jednoduché prispôsobenie sa mnohým typom aplikácií bez Java kódovania. Solr má architektúru pluginov na podporu pokročilejších prispôsobení.
V dôsledku zlúčenia projektov Apache Lucene a Apache Solr v roku 2010 boli oba projekty vytvorené a realizované rovnakým vývojárskym tímom Apache Software Foundation. Čo sa týka technológií alebo produktov, Lucene/Solr alebo Solr/Lucene sú rovnaké.
Výhody a nevýhody Solr:
zásluha
- Solr má väčšiu a zrelšiu komunitu používateľov, vývojárov a prispievateľov.
- Podpora pridávania indexov vo viacerých formátoch, ako sú HTML, PDF, softvérové formáty Microsoft Office a formáty obyčajného textu ako JSON, XML, CSV a podobne.
- Solr je pomerne vyspelý a stabilný.
- Vyhľadávanie počas indexovania sa neberie do úvahy a rýchlosť je vyššia.
nedostatok
- Keď je index vytvorený, efektivita vyhľadávania klesá a efektivita vyhľadávania indexov v reálnom čase nie je vysoká.
Elasticsearch vs Solr*
Solr je rýchlejší len pri vyhľadávaní existujúcich dát.
Pri indexovaní v reálnom čase spôsobuje Solr blokovanie IO a slabý výkon dotazov, čo má Elasticsearch jasnú výhodu.
S rastúcim množstvom dát klesá efektivita vyhľadávania Solr, zatiaľ čo Elasticsearch sa výrazne nemení.
Na záver, architektúra Solr nie je vhodná pre aplikácie vyhľadávania v reálnom čase.
Testovanie výroby v reálnom svete*
Obrázok nižšie ukazuje 50-násobné zvýšenie priemernej rýchlosti dotazov po prechode zo Solr na Elasticsearch.
Zhrnutie porovnania Elasticsearch vs Solr
- Obe sú jednoduché na inštaláciu;
- Solr využíva Zookeeper na distribuovanú správu, zatiaľ čo samotný Elasticsearch má distribuovanú orchestráciu;
- Solr podporuje viac formátov dát, zatiaľ čo Elasticsearch podporuje iba formáty JSON súborov;
- Solr oficiálne poskytuje viac funkcií, zatiaľ čo Elasticsearch sa viac zameriava na základné funkcie a pokročilé funkcie sú väčšinou poskytované pluginmi tretích strán.
- Solr prekonáva Elasticsearch v tradičných vyhľadávacích aplikáciách, ale je výrazne menej efektívny ako Elasticsearch pri práci s aplikáciami v reálnom čase.
- Solr je výkonné riešenie pre tradičné vyhľadávacie aplikácie, ale Elasticsearch je vhodnejší pre vznikajúce aplikácie vyhľadávania v reálnom čase.
Ďalšie open source vyhľadávacie riešenia založené na Lucene*
1: Použite priamo Lucene
Poznámka: Lucene je vyhľadávacia knižnica JAVA, ktorá sama o sebe nie je kompletným riešením a vyžaduje dodatočné vývojové úsilie.
Výhody: Zrelé riešenie s mnohými úspešnými prípadmi. Apache projekty na najvyššej úrovni, ktoré naďalej rýchlo napredujú. Veľká a aktívna vývojárska komunita, veľké množstvo vývojárov. Je to len knižnica tried, s dostatkom priestoru na prispôsobenie a optimalizáciu: po jednoduchom prispôsobení dokáže splniť väčšinu bežných potrieb; Optimalizované na podporu 1 miliardy+ vyhľadávaní.
Nevýhody: Vyžaduje dodatočné vývojové úsilie. Všetko škálovanie, distribúcia, spoľahlivosť a podobne musia byť implementované sami; V nereálnom čase je medzi indexovaním a vyhľadávaním časové oneskorenie a škálovateľnosť súčasného vyhľadávacieho systému "Lucene Near Real Time" je potrebné ďalej zlepšiť
Prihlásenie na hypertextový odkaz je viditeľné.
2: Katta
Poznámka: Lucene podporovaná distribuovaná, škálovateľná, odolná voči chybám, takmer v reálnom čase vyhľadávacia schéma.
Výhody: Distribuované hneď po vybalení s Hadoop. Má mechanizmus škálovania a odolnosti voči chybám.
Nevýhody: Je to len vyhľadávacie riešenie a indexovanie si musíte implementovať sami. Z hľadiska vyhľadávacej funkcie sa napĺňajú len tie najzákladnejšie potreby. Úspešných príbehov je menej a zrelosť projektu je o niečo nižšia. Keďže musí podporovať distribúciu, bude ťažké ho prispôsobiť pre zložité požiadavky na dotazy.
Prihlásenie na hypertextový odkaz je viditeľné.
3: Hadoop príspevky/index
Poznámka: Map/Reduce režim, distribuované indexovacie riešenie, sa dá použiť s Kattou.
Výhody: Distribuované indexovanie a škálovateľnosť.
Nevýhody: Iba indexovacia schéma, nie implementácia vyhľadávania. Funguje v dávkovom režime s nízkou podporou vyhľadávania v reálnom čase.
Prihlásenie na hypertextový odkaz je viditeľné.
4: Open-source riešenie LinkedIn
Popis: Rad riešení založených na Lucene, vrátane Zoie pre vyhľadávanie takmer v reálnom čase, Bobo pre vyhľadávanie facetov, Decomposer pre algoritmy strojového učenia, Krati pre sumarizačné repozitáre, Sensei pre obalovanie databázových schém a ďalšie
Výhody: Overené riešenie, ktoré podporuje distribuovanú, škálovateľnú a bohatú implementáciu funkcií
Nevýhody: Príliš úzke prepojenie so spoločnosťou LinkedIn a zlá možnosť prispôsobenia
Prihlásenie na hypertextový odkaz je viditeľné.
5: Lucandra
Poznámka: Na základe Lucene existuje index v databáze Cassandra
Výhody: Pozrite sa na výhody Cassandry
Nevýhody: Pozri sa na nevýhody Cassandry. Tiež, toto je len demo a nebolo to dôkladne overené
Prihlásenie na hypertextový odkaz je viditeľné.
6:HBasene
Poznámka: Na základe Lucene existuje index v databáze HBase
Výhody: Pozrite sa na výhody HBázy
Nevýhody: Pozrite sa na nevýhody HBázy. Tiež v implementácii sú lucene termíny uložené ako riadky, ale zoznamy príspevkov zodpovedajúce každému termínu sú uložené ako stĺpce. Ako počet zoznamov na zverejňovanie jedného výrazu rastie, rýchlosť dotazovania bude výrazne ovplyvnená
Prihlásenie na hypertextový odkaz je viditeľné.
7: Xunsearch
Poznámka: Xunsearch používa štruktúrovaný hierarchický dizajn, vrátane back-end služieb a front-end vývojových balíkov, s jasnými hierarchiami a bez prieniku. Backend je démon napísaný v C/C++, zatiaľ čo frontend používa PHP, najpopulárnejší skriptovací jazyk, ktorý je pohodlnejší pre webové vyhľadávacie projekty. Podrobnosti nájdete v časti Architektonický dizajn.
Prihlásenie na hypertextový odkaz je viditeľné.
|