Elastne otsing

Parimate tavade otsimine ja jõudluse suurendamine

Parimate tavade otsimine ja jõudluse suurendamine
Selles postituses proovime koguda parimaid tavasid ja ka asju, mida tuleks vältida Elasticsearchiga töötamisel ja sinna andmete sisestamisel. Nii saame teada, mida kõike peame hoolitsema, enne kui hakkame selle suurepärase otsingumootoriga koostööd tegema.

Elasticsearchi parimad tavad

Alustame parimate tavade kasutamist, et järgida Elasticsearchi ja milliseid probleeme see võib tekitada, kui neid punkte väldime. Alustame.

Määrake alati ES-kaardistused

Üks asi, mida ES kindlasti teha saab, on ilma kaardistusteta töötamine. Niisiis, kui hakkate JSON-i andmeid oma ES-indeksisse sisestama, kordab see andmevälju ja loob sobiva kaardistamise. See tundub otsene ja lihtne, kuna ES valib ise andmetüübi. Teie andmete põhjal võib vaja minna välja, mis oleks konkreetse andmetüübiga.

Oletame näiteks, et indekseerite järgmise dokumendi:


"id": 1,
"title": "Installige ElasticSearch Ubuntu",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
"kuupäev": "2018-03-25"

Nii märgib Elasticsearch välja „kuupäev” tüübiks „kuupäev”. Kuid kui indekseerite järgmise dokumendi:


"id": 1,
"title": "ES parimad tavad ja jõudlus",
"date": "Ootel"

Seekord on kuupäevavälja tüüp muudetud ja ES viskab vea ega luba teie dokumenti indekseerida. Asjade lihtsustamiseks võite mõne dokumendi indekseerida, vaadata, milliseid välju ES indekseerib, ja haarata kaardistamine sellelt URL-ilt:

GET / register_nimi / doc_type / _mapping

Nii ei pea te ka täielikku kaardistamist koostama.

Tootmislipud

Klastri vaikenime, mida ES käivitab, nimetatakse elasticsearch. Kui teie klastris on palju sõlme, on mõistlik hoida nimetamislipud võimalikult järjepidevad, näiteks:

klaster.nimi: rakenduse_tootmine
sõlm.nimi: app_es_node_001

Peale selle on sõlmede taastamise seaded samuti olulised. Oletame, et mõned klastri sõlmed taaskäivituvad tõrke tõttu ja mõned sõlmed taaskäivituvad veidi pärast teisi sõlme. Andmete järjepidevuse tagamiseks kõigi nende sõlmede vahel peame käivitama järjepidevusprogrammi, mis hoiab kõiki klastreid järjepidevas olekus.

värav.taastamise_järgsed_sõlmed: 10

Samuti on kasulik, kui ütlete klastrile ette, kui palju sõlme klastris on ja kui palju taasteaega need vajavad:

värav.oodatavad_sõlmed: 20
värav.taastumisaeg: 7m

Õige konfiguratsiooni korral võib tundideks kulunud taastamine võtta nii vähe kui minut ja see võib säästa mis tahes ettevõttele palju raha.

Võimsuse tagamine

Oluline on teada, kui palju teie andmed ruumi võtavad ja kui kiiresti see Elasticsearchi voolab, sest see otsustab, kui palju RAM-i vajate ka klastri igas sõlmes ja põhisõlmes.

Muidugi pole vajalike arvude saavutamiseks konkreetseid juhiseid, kuid võime teha mõned sammud, mis pakuvad meile head ideed. Üks sammudest on simuleerima kasutamise juhtum. Tehke ES-klaster ja sisestage see peaaegu sama andmeedastuskiirgusega, mida võiksite oodata oma tooteseadistusega. Mõiste alustada suurelt ja vähendada aitab teil olla järjekindel ka selles osas, kui palju ruumi on vaja.

Suured mallid

Indekseeritud suurte mallide määratlemisel peate alati silmitsi probleemidega, mis on seotud malli sünkroonimisega klastri eri sõlmedes. Pidage alati meeles, et mall tuleb uuesti määratleda iga kord, kui toimub andmemudeli muutus. See on palju parem idee hoia mallid dünaamilistena. Dünaamilised mallid värskendavad väljade vastendusi automaatselt varem määratletud vastenduste ja uute väljade põhjal. Pange tähele, et mallide võimalikult väiksena hoidmine ei asenda midagi.

2Mulockalli kasutamine Ubuntu serverites

Linux kasutab vahetamise protsessi, kui see vajab uute lehtede jaoks mälu. Vahetamine muudab asja aeglaseks, kuna kettad on mälust aeglasemad. The mlockall ES-i konfiguratsioonis olev atribuut käsib ES-il oma lehti mälust välja vahetada, isegi kui need pole praegu vajalikud. Selle atribuudi saab määrata YAML-failis:

bootstrap.mlockall: tõsi

ES v5-s.x + versioonid, see atribuut on muutunud:

bootstrap.memory_lock: tõsi

Kui kasutate seda omadust, veenduge, et pakuksite ES-ile piisavalt suurt kuppemälu -DXmx valik või ES_HEAP_SIZE.

Minimeeri kaardistamise värskendused

Klastri jõudlust mõjutab veidi iga kord, kui teete oma ES-klastris värskendustaotluste kaardistamise. Kui te ei saa seda kontrollida ja soovite siiski kaardistusi värskendada, saate kasutada ES YAML-i konfiguratsioonifailis atribuuti:

indeksid.klaster.send_refresh_mapping: false

Kui mudeli värskendustaotlus on põhisõlme ootel järjekorras ja see saadab sõlmedele vana kaardistusega andmed, peab ta hiljem ka kõigile sõlmedele värskendustaotluse saatma. See võib muuta asja aeglaseks. Kui määrame ülaltoodud atribuudi väärtuseks Väär, on mõistlik, et vastendust on värskendatud ja see ei saada sõlmedele värskendustaotlust. Pange tähele, et see on kasulik ainult siis, kui teete oma kaardistustes regulaarselt palju muudatusi.

Optimeeritud niit-pool

ES-sõlmedel on palju niidipunkte, et parandada lõime haldamist sõlmes. Kuid on olemas piirangud, kui palju andmeid iga lõime eest hoolitseda saab. Selle väärtuse jälgimiseks saame kasutada ES-i omadust:

threadpool.lahtiselt.queue_size: 2000

See annab ES-le teada killustikus olevate taotluste arvu, mida saab sõlmes täitmiseks järjekorda seada, kui päringu töötlemiseks pole lõime saadaval. Kui ülesannete arv ületab selle väärtuse, saate a RemoteTransportException. Mida suurem on see väärtus, seda rohkem on teie sõlmmasinas vaja kuhjamahtu ja kulutatakse ka JVM-i kuhja. Samuti peaksite oma koodi valmis hoidma juhul, kui see erand visatakse.

Järeldus

Selles tunnis vaatasime, kuidas saaksime parandada Elasticsearchi jõudlust, vältides inimeste tavalisi ja mitte nii levinud vigu. Lisateave artiklite Elasticsearch artiklite kohta LinuxHintis.

Kuidas installida ja mängida Doomi Linuxis
Doomi sissejuhatus Doom-seeria sai alguse 90ndatel pärast algse Doomi väljaandmist. See oli kohene hitt ja sellest ajast alates on mänguseeria pälvinu...
Vulkan Linuxi kasutajatele
Iga uue põlvkonna graafikakaartidega näeme, et mängude arendajad ületavad graafilise truuduse piire ja jõuavad fotorealismile ühe sammu lähemale. Kuid...
OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...