Výzkumný dokument o výběru vyhledávače
Úvod do Elasticsearch*
Elasticsearch je distribuovaný vyhledávací a analytický engine v reálném čase. Pomáhá vám zpracovávat rozsáhlá data rychleji než kdy dříve.
Lze jej použít pro fulltextové vyhledávání, strukturované vyhledávání a analytiku, a samozřejmě můžete kombinovat všechny tři věci.
Elasticsearch je vyhledávač postavený na fulltextovém vyhledávači Apache Lucene™, který lze označit za nejpokročilejší a nejefektivnější plně vybavený open source vyhledávací framework dostupný dnes.
Ale Lucene je jen framework a abyste mohli plně využít jeho funkce, musíte použít JAVA a integrovat Lucene do svého programu. Vyžaduje to hodně učení, než to funguje, a Lucéne je opravdu složitý.
Elasticsearch používá Lucene jako svůj interní engine, ale při vyhledávání v plném textu stačí použít pouze sjednocené API, aniž byste rozuměli složitým principům fungování Lucene, které za ním stojí.
Samozřejmě, Elasticsearch není jen tak jednoduchý jako Lucene, zahrnuje nejen funkce vyhledávání v plném textu, ale dokáže také vykonávat následující úkoly:
- Distribuované ukládání souborů v reálném čase a indexování každého pole, aby bylo možné ho prohledávat.
- Distribuovaný vyhledávač s analytikou v reálném čase.
- Může škálovat na stovky serverů pro zpracování petabajtů strukturovaných i nestrukturovaných dat.
Díky tolika funkcím integrovaným do jednoho serveru můžete snadno komunikovat s RESTful API od ES přes klienta nebo jakýkoli z vašich oblíbených programovacích jazyků.
Začít s Elasticsearch je velmi jednoduché. Obsahuje spoustu velmi rozumných výchozích nastavení, což z něj dělá dobrý způsob, jak se začátečníci vyhnout složitým teoriím hned na začátku.
Je nainstalovaný a připravený k použití, a může být velmi produktivní i s malými náklady na učení.
Jak se budete dozvídat více, můžete také využít pokročilejší funkce Elasticsearch a celý engine lze flexibilně nastavit. Můžete si přizpůsobit svůj vlastní Elasticsearch podle svých potřeb.
Případy použití:
- Wikipedia používá Elasticsearch k vyhledávání v plném textu a zvýrazňování klíčových slov, stejně jako k návrhům vyhledávání jako vyhledávání při psaní a did-you-myslel.
- The Guardian používá Elasticsearch ke zpracování návštěvnických záznamů, aby byli editoři informováni o reakcích veřejnosti na různé články v reálném čase.
- StackOverflow kombinuje vyhledávání v plném textu s geolokací a relevantními informacemi, aby poskytl reprezentaci otázek souvisejících s podobnými věcmi.
- GitHub používá Elasticsearch k získání více než 130 miliard řádků kódu.
- Každý den jej Goldman Sachs používá k indexaci 5TB dat a mnoho investičních bank jej využívá k analýze pohybů akciových trhů.
Ale Elasticsearch není určen jen pro velké podniky, ale také pomohl mnoha startupům jako DataDog a Klout rozšířit jejich schopnosti.
Výhody a nevýhody Elasticsearch**:
zásluha
- Elasticsearch je distribuovaný. Nejsou potřeba žádné další komponenty a distribuce probíhá v reálném čase, známá jako "Push replikace".
- Elasticsearch plně podporuje téměř reálné vyhledávání s Apache Lucene.
- Zpracování multitenancy nevyžaduje žádnou speciální konfiguraci, zatímco Solr vyžaduje pokročilejší nastavení.
- Elasticsearch využívá koncept Gateway, aby bylo snazší zálohovat.
- Každý uzel tvoří rovnocennou síťovou strukturu a když některé uzly selžou, jsou automaticky přiřazeny jiné uzly k jejich nahrazení.
nedostatek
- Pouze jeden vývojář (současná organizace Elasticsearch na GitHubu je víc, už má poměrně aktivní správce společnosti)
- Není dostatečně automatické (není vhodné pro aktuální nové API Index Warmup)
O Solr*
Solr (vyslovuje se "solar") je open-source podniková vyhledávací platforma pro projekt Apache Lucene. Mezi jeho hlavní funkce patří vyhledávání v plném textu, označování výsledků, facetové vyhledávání, dynamické shlukování, integrace databází a zpracování bohatého textu (např. Word, PDF). Solr je vysoce škálovatelný a poskytuje distribuované vyhledávání a replikaci indexů. Solr je nejpopulárnější podnikový vyhledávač a Solr4 také přidává podporu NoSQL.
Solr je samostatný fulltextový vyhledávací server napsaný v Javě, který běží na servletovém kontejneru, jako je Apache Tomcat nebo Jetty. Solr používá vyhledávací knihovnu Lucene Java jako jádro pro indexování a vyhledávání v plném textu a má REST-like HTTP/XML a JSON API. Výkonné externí konfigurační schopnosti Solr usnadňují přizpůsobení mnoha typům aplikací bez Java kódování. Solr má architekturu pluginů pro podporu pokročilejších úprav.
Kvůli sloučení projektů Apache Lucene a Apache Solr v roce 2010 byly oba projekty vytvořeny a realizovány stejným vývojovým týmem Apache Software Foundation. Pokud jde o technologie nebo produkty, Lucene/Solr nebo Solr/Lucene jsou na tom stejně.
Výhody a nevýhody Solr:
zásluha
- Solr má větší a vyspělejší komunitu uživatelů, vývojářů a přispěvatelů.
- Podpora přidávání indexů v různých formátech, jako jsou HTML, PDF, formáty Microsoft Office a prosté textové formáty jako JSON, XML, CSV atd.
- Solr je poměrně vyspělý a stabilní.
- Vyhledávání při indexování se nebere v úvahu a rychlost je rychlejší.
nedostatek
- Když je index vytvořen, efektivita vyhledávání klesá a efektivita vyhledávání indexů v reálném čase není vysoká.
Elasticsearch vs Solr*
Solr je rychlejší už při hledání existujících dat.
Při indexování v reálném čase způsobuje Solr blokování IO a špatný výkon dotazů, což má Elasticsearch jasnou výhodu.
S rostoucím množstvím dat klesá efektivita vyhledávání v Solru, zatímco Elasticsearch se výrazně nemění.
Shrnuto, architektura Solr není vhodná pro aplikace vyhledávání v reálném čase.
Testování výroby v reálném světě*
Obrázek níže ukazuje 50násobné zvýšení průměrné rychlosti dotazů po přechodu ze Solr na Elasticsearch.
Shrnutí srovnání Elasticsearch vs Solr
- Oba jsou snadno instalovatelné;
- Solr využívá Zookeeper pro distribuovanou správu, zatímco Elasticsearch sám má distribuovanou orchestraci managementu;
- Solr podporuje více formátů dat, zatímco Elasticsearch podporuje pouze formáty JSON souborů;
- Solr oficiálně nabízí více funkcí, zatímco Elasticsearch se více zaměřuje na základní funkce a pokročilé funkce jsou většinou poskytovány pluginy třetích stran.
- Solr překonává Elasticsearch v tradičních vyhledávacích aplikacích, ale je výrazně méně efektivní než Elasticsearch při práci s aplikacemi v reálném čase.
- Solr je výkonné řešení pro tradiční vyhledávací aplikace, ale Elasticsearch je lépe přizpůsoben pro vznikající aplikace vyhledávání v reálném čase.
Další open source vyhledávače založené na Lucene*
1: Používejte Lucene přímo
Poznámka: Lucene je JAVA vyhledávací knihovna, která sama o sobě není kompletním řešením a vyžaduje dodatečné vývojové úsilí.
Výhody: Vyspělé řešení s mnoha úspěšnými případy. Apache jsou projekty na nejvyšší úrovni, které nadále rychle postupují. Velká a aktivní vývojářská komunita, velké množství vývojářů. Je to jen knihovna tříd s dostatkem prostoru pro přizpůsobení a optimalizaci: po jednoduché úpravě dokáže splnit většinu běžných potřeb; Optimalizováno pro podporu vyhledávání 1 miliardy+.
Nevýhody: Vyžaduje to další vývojové úsilí. Veškeré škálování, distribuce, spolehlivost atd. musíte implementovat sami; V nereálném čase je mezi indexováním a vyhledáváním časové zpoždění a škálovatelnost současného vyhledávacího schématu "Lucene Near Real Time" je třeba dále zlepšit
Přihlášení k hypertextovému odkazu je viditelné.
2: Katta
Poznámka: Lucene podporuje distribuované, škálovatelné, odolné vůči chybám a téměř v reálném čase vyhledávací schéma.
Klady: Distribuováno přímo po vybalení s Hadoopem. Má mechanismus škálování a odolnosti vůči chybám.
Nevýhody: Je to jen vyhledávací řešení a indexaci si musíte implementovat sami. Z hlediska vyhledávacích funkcí jsou splněny pouze ty nejzákladnější potřeby. Úspěšných příběhů je méně a zralost projektu je o něco nižší. Protože musí podporovat distribuci, bude obtížné jej přizpůsobit pro složité požadavky na dotazy.
Přihlášení k hypertextovému odkazu je viditelné.
3: Příspěvek/index Hadoop
Poznámka: Režim Map/Redukce, distribuované indexovací řešení, lze použít s Kattou.
Výhody: Distribuované indexování a škálovatelnost.
Nevýhody: Pouze indexovací schéma, nikoli implementace vyhledávání. Funguje v dávkovém režimu s nedostatečnou podporou pro vyhledávání v reálném čase.
Přihlášení k hypertextovému odkazu je viditelné.
4: Open-source řešení LinkedIn
Popis: Řada řešení založených na Lucene, včetně Zoie pro vyhledávání téměř v reálném čase, Bobo pro vyhledávání facetů, Decomposer pro algoritmy strojového učení, Krati pro repozitáře shrnování, Sensei pro obalování databázových schémat a další
Výhody: Osvědčené řešení podporující distribuovanou, škálovatelnou a bohatou implementaci funkcí
Nevýhody: Příliš úzké propojení s LinkedIn a špatná přizpůsobitelnost
Přihlášení k hypertextovému odkazu je viditelné.
5: Lucandra
Poznámka: Na základě Lucene existuje index v databázi Cassandra
Výhody: Viz výhody Cassandry
Nevýhody: Viz nevýhody Cassandry. Navíc je to jen demo a nebylo to silně ověřeno
Přihlášení k hypertextovému odkazu je viditelné.
6:HBasene
Poznámka: Na základě Lucene existuje index v databázi HBase
Výhody: Viz výhody HBázy
Nevýhody: Viz nevýhody HBase. Také v implementaci jsou lucene termíny ukládány jako řádky, ale seznamy příspěvků odpovídající každému termínu jsou uloženy ve sloupcích. Jak počet seznamů pro jeden termín roste, rychlost dotazu bude výrazně ovlivněna
Přihlášení k hypertextovému odkazu je viditelné.
7: Xunsearch
Poznámka: Xunsearch používá strukturovaný hierarchický design, včetně back-end služeb a front-end vývojových balíčků, s jasnými hierarchiemi a bez průniků. Backend je démon napsaný v C/C++, zatímco frontend používá PHP, nejpopulárnější skriptovací jazyk, který je pohodlnější pro webové vyhledávače. Podrobnosti viz Architektonický návrh.
Přihlášení k hypertextovému odkazu je viditelné.
|