Elastické vyhľadávanie

Najlepšie postupy pre Elasticsearch a zvyšovanie výkonu

Najlepšie postupy pre Elasticsearch a zvyšovanie výkonu
V tomto príspevku sa pokúsime zhromaždiť osvedčené postupy a tiež to, čomu sa treba vyhnúť pri práci s Elasticsearch a vkladaní údajov do neho. Týmto spôsobom budeme vedieť, o čo všetko je potrebné sa postarať, skôr ako začneme pracovať s týmto vynikajúcim vyhľadávačom.

Najlepšie postupy pre Elasticsearch

Začneme pracovať s osvedčenými postupmi, aby sme sledovali Elasticsearch a aké problémy môže spôsobiť, keď sa týmto bodom vyhneme. Začnime.

Vždy definujte mapovania ES

Jedna vec, ktorú ES určite môže urobiť, je práca bez mapovania. Takže keď začnete s načítaním údajov JSON do vášho indexu ES, bude iterovať cez polia údajov a vytvorí vhodné mapovanie. Zdá sa to priame a ľahké, pretože ES vyberá samotný dátový typ. Na základe vašich údajov možno budete potrebovať pole, ktoré bude konkrétneho typu údajov.

Predpokladajme napríklad, že indexujete nasledujúci dokument:


„id“: 1,
"title": "Inštalovať ElasticSearch na Ubuntu",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
"date": "2018-03-25"

Týmto spôsobom Elasticsearch označí pole „date“ ako typ „date“. Ale keď indexujete nasledujúci dokument:


„id“: 1,
"title": "Najlepšie postupy a výkonnosť ES",
"date": "Čaká sa"

Tentokrát sa zmenil typ poľa pre dátum a ES spôsobí chybu a neumožní indexovanie vášho dokumentu. Aby ste to uľahčili, môžete indexovať niekoľko dokumentov, zistiť, ktoré polia indexuje ES, a získať mapovanie z tejto adresy URL:

GET / index_name / doc_type / _mapping

Týmto spôsobom nebudete musieť zostaviť aj úplné mapovanie.

Výrobné vlajky

Volá sa predvolený názov klastra, ktorý ES začína elasticsearch. Ak máte vo svojom klastri veľa uzlov, je dobré udržiavať pomenovacie príznaky čo najkonzistentnejšie, napríklad:

zhluk.názov: app_es_production
uzol.názov: app_es_node_001

Okrem toho je veľmi dôležité nastavenie obnovy pre uzly. Predpokladajme, že niektoré uzly v klastri sa reštartujú z dôvodu zlyhania a niektoré uzly sa reštartujú krátko po ostatných uzloch. Aby sme udržali konzistentnosť údajov medzi všetkými týmito uzlami, budeme musieť spustiť program konzistencie, ktorý udrží všetky klastre v konzistentnom stave.

brána.recover_after_nodes: 10

Je tiež užitočné, keď vopred informujete klaster, koľko uzlov bude v klastri prítomných a koľko času na zotavenie tieto budú potrebovať:

brána.očakávané_uzly: 20
brána.recover_after_time: 7 m

Pri správnej konfigurácii môže obnova, ktorá by trvala hodiny, trvať len minútu a ušetrí spoločnosti veľa peňazí.

Poskytovanie kapacity

Je dôležité vedieť, koľko miesta zaberú vaše dáta a rýchlosť ich toku do Elasticsearch, pretože to rozhodne o veľkosti pamäte RAM, ktorú budete potrebovať na každom uzle klastra a tiež hlavnom uzle.

Samozrejme, neexistujú žiadne konkrétne pokyny na dosiahnutie potrebného počtu, ale môžeme podniknúť kroky, ktoré nám poskytnú dobrý nápad. Jedným z krokov bude simulovať prípad použitia. Vytvorte klaster ES a napájajte ho takmer rovnakou rýchlosťou dát, akú by ste očakávali pri nastavení výroby. Koncepcia začať vo veľkom a zmenšovať sa vám tiež môže pomôcť konzistentne ohľadom toho, koľko miesta je potrebné.

Veľké šablóny

Keď definujete indexované veľké šablóny, budete vždy čeliť problémom súvisiacim so synchronizáciou šablóny cez rôzne uzly klastra. Vždy nezabudnite, že šablóna bude musieť byť nanovo definovaná vždy, keď dôjde k zmene dátového modelu. Je to oveľa lepší nápad udržujte šablóny dynamické. Dynamické šablóny automaticky aktualizujú mapovania polí na základe mapovaní, ktoré sme definovali skôr, a nových polí. Upozorňujeme, že udržiavanie čo najmenších šablón nie je možné nijako nahradiť.

2Použitie mlockall na serveroch Ubuntu

Linux využíva proces výmeny, keď potrebuje pamäť na nové stránky. Vďaka zámene sú veci pomalšie, pretože disky sú pomalšie ako pamäť. The mlockall Vlastnosť v konfigurácii ES hovorí ES, aby nevymieňal svoje stránky z pamäte, aj keď to teraz nie je potrebné. Túto vlastnosť je možné nastaviť v súbore YAML:

bootstrap.mlockall: pravda

V ES v5.verzie x +, táto vlastnosť sa zmenila na:

bootstrap.memory_lock: true

Ak používate túto vlastnosť, uistite sa, že ste ES poskytli dostatočne veľkú haldy pamäte pomocou -DXmx možnosť alebo ES_HEAP_SIZE.

Minimalizujte aktualizácie mapovania

Výkon klastra je mierne ovplyvnený vždy, keď na svojom klastri ES urobíte požiadavky na aktualizáciu mapovania. Ak to nemôžete ovládať a stále chcete aktualizovať mapovania, môžete použiť vlastnosť v konfiguračnom súbore ES YAML:

indexy.zhluk.send_refresh_mapping: false

Keď je požiadavka na aktualizáciu modelu v čakajúcom rade na hlavný uzol a do uzlov odosiela údaje so starým mapovaním, musí tiež neskôr poslať požiadavku na aktualizáciu všetkým uzlom. Vďaka tomu môžu byť veci pomalé. Keď nastavíme vyššie uvedenú vlastnosť na hodnotu false, bude mať hlavný zmysel, že v mapovaní bola vykonaná aktualizácia a do uzlov sa žiadosť o aktualizáciu neodošle. Toto je užitočné, iba ak pravidelne robíte veľa zmien vo svojich mapovaniach.

Optimalizovaný súbor vlákien

Uzly ES majú veľa oblastí vlákien, aby sa zlepšilo spravovanie vlákien v rámci uzla. Existujú však obmedzenia týkajúce sa množstva údajov, o ktoré sa každé vlákno môže postarať. Na sledovanie tejto hodnoty môžeme použiť vlastnosť ES:

threadpool.objem.queue_size: 2000

Toto informuje ES o počte požiadaviek v zlomku, ktorý je možné zaradiť do frontu na vykonanie v uzle, keď nie je k dispozícii vlákno na spracovanie požiadavky. Ak počet úloh stúpne nad túto hodnotu, získate a RemoteTransportException. Čím vyššia je táto hodnota, tým väčšie množstvo haldy bude potrebné na vašom uzlovom stroji a hromada JVM sa tiež spotrebuje. Svoj kód by ste mali mať pripravený aj pre prípad, že dôjde k vyvolaniu tejto výnimky.

Záver

V tejto lekcii sme sa pozreli na to, ako môžeme zlepšiť výkon elasticsearchu tým, že sa vyhneme častým a nie tak častým chybám, ktoré ľudia robia. Prečítajte si viac článkov Elasticsearch na stránke LinuxHint.

Hry Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Hranie hier na celú obrazovku alebo používanie aplikácií v režime rozptýlenia zadarmo na celú obrazovku vás môže odrezať od relevantných systémových i...
Hry Top 5 kariet na zachytávanie hier
Top 5 kariet na zachytávanie hier
Všetci sme videli a milovali streamovanie hier na YouTube. PewDiePie, Jakesepticye a Markiplier sú iba niektorí z najlepších hráčov, ktorí zarobili mi...
Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...