Elastinė paieška

„Elasticsearch“ geriausios praktikos pavyzdžiai ir našumo didinimas

„Elasticsearch“ geriausios praktikos pavyzdžiai ir našumo didinimas
Šiame įraše bandysime rinkti geriausią praktiką ir tai, ko reikėtų vengti dirbant su „Elasticsearch“ ir į ją įvedant duomenis. Tokiu būdu mes žinosime, ką turime rūpintis, prieš pradėdami dirbti su šia puikia paieškos sistema.

„Elasticsearch“ geriausios praktikos pavyzdžiai

Mes pradėsime dirbti su geriausios praktikos pavyzdžiais, kad galėtume laikytis „Elasticsearch“ ir kokių problemų jis gali sukelti, kai išvengsime šių punktų. Pradėkime.

Visada apibrėžkite ES susiejimus

Vienas dalykas, kurį ES tikrai gali padaryti, yra darbas be atvaizdavimo. Taigi, kai pradėsite kaupti JSON duomenis į savo ES indeksą, jis kartosis duomenų laukuose ir sukurs tinkamą žemėlapį. Tai atrodo tiesioginė ir lengva, nes ES pati renkasi duomenų tipą. Atsižvelgiant į jūsų duomenis, gali reikėti, kad laukas būtų konkretaus tipo.

Pvz., Tarkime, kad indeksuojate šį dokumentą:


„id“: 1,
"title": "Įdiekite" ElasticSearch "Ubuntu",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
„data“: „2018-03-25“

Tokiu būdu „Elasticsearch“ lauką „data“ pažymės kaip „datos“ tipą. Bet indeksuodami šį dokumentą:


„id“: 1,
„title“: „ES geriausia praktika ir našumas“,
„data“: „Laukiama“

Šį kartą datos lauko tipas buvo pakeistas, o ES sukels klaidą ir neleis jūsų dokumento indeksuoti. Kad būtų lengviau, galite indeksuoti kelis dokumentus, pamatyti, kokius laukus indeksuoja ES, ir paimti žemėlapį iš šio URL:

GET / index_name / doc_type / _mapping

Tokiu būdu jums nereikės kurti ir viso žemėlapio.

Gamybos vėliavos

Vadinamas numatytasis klasterio pavadinimas, kurį pradeda ES elasticsearch. Kai jūsų klasteryje yra daug mazgų, pravartu kuo labiau suderinti pavadinimų vėliavas, pavyzdžiui:

klasteris.pavadinimas: app_es_production
mazgas.pavadinimas: app_es_node_001

Be to, labai svarbu ir mazgų atkūrimo nustatymai. Tarkime, kad kai kurie sankaupos mazgai paleidžiami iš naujo dėl gedimo, o kai kurie mazgai vėl paleidžiami šiek tiek po kitų mazgų. Kad duomenys būtų nuoseklūs tarp visų šių mazgų, turėsime paleisti nuoseklumo programą, kuri išlaikys visas grupes nuoseklioje būsenoje.

vartai.10

Taip pat naudinga, kai iš anksto sakote klasteriui, kiek mazgų bus klasteryje ir kiek jiems reikės atkūrimo laiko:

vartai.tikėtini mazgai: 20
vartai.atgauti_po_laikas: 7m

Naudojant teisingą konfigūraciją, atkūrimas, kuris būtų užtrukęs kelias valandas, gali užtrukti vos minutę ir gali sutaupyti daug pinigų bet kuriai įmonei.

Pajėgumų aprūpinimas

Svarbu žinoti, kiek vietos užims jūsų duomenys ir kokiu greičiu jie pateks į „Elasticsearch“, nes tai nuspręs, kiek RAM jums reikės kiekviename klasterio mazge ir pagrindiniame mazge.

Žinoma, nėra konkrečių rekomendacijų, kaip pasiekti reikiamą skaičių, tačiau galime imtis tam tikrų veiksmų, kurie mums suteiktų gerą idėją. Vienas iš žingsnių bus imituoti naudojimo atvejis. Sukurkite ES grupę ir tiekite ją beveik tokiu pačiu duomenų greičiu, kokio tikėtumėte atlikdami savo gamybos sąranką. Sąvoka pradėti didelę ir mažinti mastą taip pat gali padėti jums nuosekliai žinoti, kiek vietos reikia.

Dideli šablonai

Apibrėždami indeksuotus didelius šablonus, visada susidursite su problemomis, susijusiomis su šablono sinchronizavimu įvairiuose klasterio mazguose. Visada atkreipkite dėmesį, kad šabloną reikės iš naujo apibrėžti, kai pasikeis duomenų modelis. Tai daug geresnė idėja išlaikyti šablonus dinamiškus. Dinaminiai šablonai automatiškai atnaujina laukų susiejimus pagal anksčiau apibrėžtus susiejimus ir naujus laukus. Atkreipkite dėmesį, kad šablonai nėra kuo mažesni.

2 „mlockall“ naudojimas „Ubuntu“ serveriuose

„Linux“ naudoja keitimosi procesą, kai reikia atminties naujiems puslapiams. Dėl keitimo viskas sulėtėja, nes diskai yra lėtesni nei atmintis. The mlockall ypatybė ES konfigūracijoje nurodo ES nekeisti savo puslapių iš atminties, net jei jie kol kas nereikalingi. Šią ypatybę galima nustatyti YAML faile:

įkrovos diržas.mlockall: tiesa

ES v5.„x +“ versijose ši ypatybė pakeista į:

įkrovos diržas.memory_lock: tiesa

Jei naudojate šią nuosavybę, tiesiog įsitikinkite, kad pateikiate ES pakankamai didelę kaupiamąją atmintį naudodami -DXmx variantas arba ES_HEAP_SIZE.

Sumažinkite žemėlapių atnaujinimus

Klasterio našumas šiek tiek nukenčia, kai pateikiate ES klasterio atnaujinimo užklausas. Jei negalite to kontroliuoti ir vis tiek norite atnaujinti susiejimus, galite naudoti ypatybę ES YAML konfigūracijos faile:

indeksai.klasteris.send_refresh_mapping: klaidingas

Kai modelio naujinimo užklausa laukia pagrindinio mazgo eilės ir ji siunčia duomenis su senais atvaizdais į mazgus, ji taip pat turi vėliau siųsti atnaujinimo užklausą visiems mazgams. Dėl to viskas gali sulėtėti. Kai aukščiau nurodytą ypatybę nustatome kaip „false“, tai supranta, kad atvaizdavimas buvo atnaujintas ir mazgams nebus siunčiama atnaujinimo užklausa. Atminkite, kad tai naudinga tik tuo atveju, jei reguliariai daug keičiate savo susiejimus.

Optimizuotas sriegis

ES mazguose yra daug gijų telkinių, kad būtų galima geriau valdyti gijas mazge. Tačiau yra apribojimų, kiek duomenų gali rūpintis kiekviena gija. Norėdami sekti šią vertę, galime naudoti ES ypatybę:

threadpool.urmu.queue_size: 2000

Tai informuoja ES apie fragmentų užklausų, kurias galima eilėje vykdyti mazge, skaičių, kai nėra gijos užklausai apdoroti. Jei užduočių skaičius viršys šią vertę, gausite „RemoteTransportException“. Kuo didesnė ši reikšmė, tuo didesnio kiekio vietos reikės jūsų mazgo mašinoje, taip pat bus sunaudota JVM krūva. Be to, turėtumėte pasiruošti savo kodą, jei ši išimtis bus atmesta.

Išvada

Šioje pamokoje mes pažvelgėme į tai, kaip galime pagerinti „Elasticsearch“ našumą, išvengdami įprastų ir nelabai įprastų klaidų. Skaitykite daugiau „Elasticsearch“ straipsnių apie „LinuxHint“.

Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...
Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...