Elastické vyhledávání

Osvědčené postupy Elasticsearch a zvyšování výkonu

Osvědčené postupy Elasticsearch a zvyšování výkonu
V tomto příspěvku se pokusíme shromáždit osvědčené postupy a také to, čeho se vyvarovat při práci s Elasticsearch a vkládání dat do něj. Tímto způsobem budeme vědět, o co vše se musíme starat, než vůbec začneme pracovat s tímto vynikajícím vyhledávačem.

Doporučené postupy pro Elasticsearch

Začneme pracovat s osvědčenými postupy, abychom mohli sledovat Elasticsearch a jaké problémy může způsobit, když se těmto bodům vyhneme. Začněme.

Vždy definujte mapování ES

Jedna věc, kterou ES jistě může udělat, je pracovat bez mapování. Když tedy začnete vkládat data JSON do svého indexu ES, bude iterovat přes pole dat a vytvoří vhodné mapování. Zdá se to přímé a snadné, protože ES vybírá samotný datový typ. Na základě vašich dat možná budete potřebovat pole konkrétního datového typu.

Předpokládejme například, že indexujete následující dokument:


"id": 1,
"title": "Nainstalovat ElasticSearch na Ubuntu",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
"date": "2018-03-25"

Tímto způsobem Elasticsearch označí pole „datum“ jako typ „datum“. Ale když indexujete následující dokument:


"id": 1,
"title": "Osvědčené postupy a výkon ES",
"date": "Pending"

Tentokrát byl změněn typ pole pro datum a ES způsobí chybu a nedovolí indexovat váš dokument. Abychom to usnadnili, můžete indexovat několik dokumentů, podívat se, jaká pole indexuje ES, a urvat mapování z této adresy URL:

GET / index_name / doc_type / _mapping

Tímto způsobem nebudete muset konstruovat také úplné mapování.

Výrobní vlajky

Volá se výchozí název clusteru, který začíná ES elasticsearch. Pokud máte ve svém clusteru mnoho uzlů, je dobré udržovat pojmenovací příznaky co nejkonzistentnější, například:

shluk.název: app_es_production
uzel.název: app_es_node_001

Kromě toho záleží také na nastavení obnovy pro uzly. Předpokládejme, že některé uzly v klastru se restartují kvůli selhání a některé uzly se restartují trochu po ostatních uzlech. Aby byla data konzistentní mezi všemi těmito uzly, budeme muset spustit program konzistence, který udrží všechny klastry v konzistentním stavu.

brána.recover_after_nodes: 10

Je také užitečné, když předem řeknete clusteru, kolik uzlů bude v clusteru přítomno a kolik času na obnovení budou potřebovat:

brána.očekávané_uzly: 20
brána.zotavit se po čase: 7 m

Se správnou konfigurací může obnovení, které by trvalo hodiny, trvat jen minutu a může společnosti ušetřit spoustu peněz.

Poskytování kapacity

Je důležité vědět, kolik místa zaberou vaše data a jak rychle se dostanou do Elasticsearch, protože to rozhoduje o velikosti RAM, kterou budete potřebovat na každém uzlu clusteru a také hlavním uzlu.

Samozřejmě neexistují žádné konkrétní pokyny k dosažení potřebného počtu, ale můžeme podniknout kroky, které nám poskytnou dobrý nápad. Jedním z kroků bude simulovat případ použití. Vytvořte ES klastr a nakrmte jej téměř stejnou rychlostí dat, jakou byste očekávali při nastavení výroby. Koncept začít velký a zmenšovat vám také pomůže být konzistentní ohledně toho, kolik místa je potřeba.

Velké šablony

Když definujete indexované velké šablony, budete vždy čelit problémům souvisejícím se synchronizací šablony napříč různými uzly clusteru. Vždy si uvědomte, že šablonu bude nutné znovu definovat, kdykoli dojde ke změně datového modelu. Je to mnohem lepší nápad udržujte šablony dynamické. Dynamické šablony automaticky aktualizují mapování polí na základě mapování, která jsme definovali dříve, a nových polí. Všimněte si, že není možné nahradit co nejmenší udržování šablon.

2Používání mlockall na serverech Ubuntu

Linux využívá proces výměny, když potřebuje paměť pro nové stránky. Díky výměně jsou věci pomalejší, protože disky jsou pomalejší než paměť. The mlockall vlastnost v konfiguraci ES říká ES, aby nevyměňoval své stránky z paměti, i když prozatím nejsou nutné. Tuto vlastnost lze nastavit v souboru YAML:

bootstrap.mlockall: pravda

V ES v5.verze x +, tato vlastnost se změnila na:

bootstrap.memory_lock: true

Pokud používáte tuto vlastnost, ujistěte se, že poskytnete ES dostatečně velkou hromadu paměti pomocí -DXmx možnost nebo ES_HEAP_SIZE.

Minimalizujte aktualizace mapování

Výkon clusteru je mírně ovlivněn, kdykoli provedete požadavky na aktualizaci mapování ve vašem clusteru ES. Pokud to nemůžete ovládat a přesto chcete provádět aktualizace mapování, můžete použít vlastnost v konfiguračním souboru ES YAML:

indexy.shluk.send_refresh_mapping: false

Když je požadavek na aktualizaci modelu v nevyřízené frontě pro hlavní uzel a odesílá data se starým mapováním do uzlů, musí také poslat požadavek na aktualizaci později všem uzlům. To může věci zpomalit. Když nastavíme výše uvedenou vlastnost na hodnotu false, dává to hlavní smysl, že byla provedena aktualizace mapování a nebude odesílat požadavek na aktualizaci do uzlů. To je užitečné, pouze pokud pravidelně provádíte mnoho změn ve svých mapováních.

Optimalizovaný fond vláken

ES uzly mají mnoho fondů vláken, aby se zlepšilo, jak jsou vlákna spravována v uzlu. Existují však omezení, kolik dat se každé vlákno může postarat. Abychom mohli tuto hodnotu sledovat, můžeme použít vlastnost ES:

threadpool.hromadně.velikost_fronty: 2000

To informuje ES o počtu požadavků ve fragmentu, který lze zařadit do fronty k provedení v uzlu, když není k dispozici vlákno pro zpracování požadavku. Pokud počet úkolů překročí tuto hodnotu, dostanete a RemoteTransportException. Čím vyšší je tato hodnota, tím vyšší množství haldy bude potřeba na vašem uzlovém stroji a hromada JVM bude také spotřebována. Také byste měli mít připravený kód pro případ, že by byla vyvolána tato výjimka.

Závěr

V této lekci jsme se zaměřili na to, jak můžeme zlepšit výkon Elasticsearch tím, že se vyhneme častým a ne tak častým chybám, kterých se lidé dopouštějí. Přečtěte si více článků Elasticsearch na LinuxHint.

Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...
Hry Užitečné nástroje pro hráče Linuxu
Užitečné nástroje pro hráče Linuxu
Pokud rádi hrajete hry na Linuxu, je pravděpodobné, že jste ke zlepšení herního zážitku použili aplikace a nástroje jako Wine, Lutris a OBS Studio. Kr...
Hry HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
Mnoho vývojářů a vydavatelů her přichází s HD remasterem starých her, aby prodloužili životnost franšízy, prosím fanoušky, kteří požadují kompatibilit...