Elastično iskanje

Najboljše prakse Elasticsearch in povečanje učinkovitosti

Najboljše prakse Elasticsearch in povečanje učinkovitosti
V tej objavi bomo poskušali zbrati najboljše prakse in tudi stvari, ki se jim je treba izogniti pri delu z Elasticsearchom in vnašanju podatkov vanj. Tako bomo vedeli, na kaj vse moramo paziti, še preden sploh začnemo delati s tem odličnim iskalnikom.

Najboljše prakse Elasticsearch

Začeli bomo sodelovati z najboljšimi praksami, ki jih bomo upoštevali pri Elasticsearchu in kakšne težave lahko povzroči, če se izognemo tem točkam. Začnimo.

Vedno definirajte preslikave ES

ES lahko vsekakor naredi, da dela brez preslikav. Ko začnete podatke JSON dovajati v svoj indeks ES, se bo ponovil po podatkovnih poljih in ustvaril primerno preslikavo. To se zdi neposredno in enostavno, saj ES sam izbere vrsto podatkov. Glede na vaše podatke boste morda potrebovali polje za določeno vrsto podatkov.

Denimo, da indeksirate naslednji dokument:


"id": 1,
"title": "Namestite ElasticSearch v Ubuntu",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
"date": "25.3.2018"

Na ta način bo Elasticsearch označil polje »datum« kot vrsto »datum«. Ko pa indeksirate naslednji dokument:


"id": 1,
"title": "Najboljše prakse in uspešnost ES",
"date": "V čakanju"

Tokrat je bila spremenjena vrsta polja z datumom in ES bo sprožil napako in ne bo omogočil indeksiranja vašega dokumenta. Za lažje stvari lahko indeksirate nekaj dokumentov, si ogledate, katera polja indeksira ES, in vzamete preslikavo s tega URL-ja:

GET / index_name / doc_type / _mapping

Tako vam ne bo treba zgraditi tudi celotnega preslikavanja.

Proizvodne zastave

Pokliče se privzeto ime gruče, ki se zažene ES elastično iskanje. Ko imate v svoji gruči veliko vozlišč, je dobro, da so označbe poimenovanja čim bolj dosledne, na primer:

grozd.ime: app_es_production
vozlišče.ime: app_es_node_001

Poleg tega so tudi nastavitve obnovitve za vozlišča zelo pomembne. Recimo, da se nekatera vozlišča v gruči znova zaženejo zaradi okvare, nekatera vozlišča pa se znova zaženejo malo po drugih vozliščih. Da bodo podatki med vsemi temi vozlišči dosledni, bomo morali zagnati program za skladnost, ki bo vse grozde ohranjal v doslednem stanju.

prehod.recovery_after_nodes: 10

Koristno je tudi, če gruči vnaprej poveste, koliko vozlišč bo v gruči in koliko časa bodo potrebni za obnovitev:

prehod.pričakovana_vozla: 20
prehod.čas obnovitve: 7m

S pravilno konfiguracijo lahko obnovitev, ki bi trajala ure, traja le minuto in lahko prihrani veliko denarja kateremu koli podjetju.

Zagotavljanje zmogljivosti

Pomembno je vedeti, koliko prostora bodo zavzeli vaši podatki in hitrost pretoka v Elasticsearch, kajti to bo odločalo o količini RAM-a, ki jo boste potrebovali na vsakem vozlišču gruče in glavnem vozlišču.

Seveda ni posebnih smernic za dosego potrebnih številk, vendar lahko naredimo nekaj korakov, ki nam dajejo dobro idejo. Eden od korakov bo simulirati primer uporabe. Naredite grozd ES in ga napolnite s skoraj enako hitrostjo podatkov, kot bi pričakovali pri nastavitvi proizvodnje. Koncept začnite veliko in pomanjšajte vam lahko pomaga tudi pri doslednosti glede potrebnega prostora.

Velike predloge

Ko definirate indeksirane velike predloge, se boste vedno soočili s težavami, povezanimi s sinhronizacijo predloge v različnih vozliščih gruče. Vedno upoštevajte, da bo treba predlogo ponovno definirati vsakič, ko pride do spremembe podatkovnega modela. Veliko boljša ideja je naj bodo predloge dinamične. Dinamične predloge samodejno posodabljajo preslikave polj na podlagi preslikav, ki smo jih definirali prej, in novih polj. Upoštevajte, da predloge ni mogoče nadomestiti tako, da bi bile predloge čim manjše.

2 Uporaba mlockall-a na strežnikih Ubuntu

Linux uporablja postopek zamenjave, kadar potrebuje pomnilnik za nove strani. Pri zamenjavi stvari postanejo počasnejše, saj so diski počasnejši od pomnilnika. The mlockall lastnost v konfiguraciji ES pove ES, da ne zamenja strani iz pomnilnika, tudi če za zdaj niso potrebne. To lastnost lahko nastavite v datoteki YAML:

zagonski trak.mlockall: res

V ES v5.različice x +, se je ta lastnost spremenila v:

zagonski trak.lock_lock: true

Če uporabljate to lastnost, poskrbite, da boste ES-ju zagotovili dovolj velik kup pomnilnika z uporabo -DXmx možnost oz ES_HEAP_SIZE.

Zmanjšajte posodobitve preslikav

Uspešnost gruče nekoliko vpliva na zahteve za posodobitev preslikave v gruči ES. Če tega ne morete nadzorovati in še vedno želite posodobiti preslikave, lahko uporabite lastnost v konfiguracijski datoteki ES YAML:

indeksi.grozd.send_refresh_mapping: false

Ko je zahteva za posodobitev modela v čakalni vrsti za glavno vozlišče in vozliščem pošlje podatke s starim preslikavanjem, mora zahtevo za posodobitev poslati tudi pozneje vsem vozliščem. To lahko upočasni stvari. Ko zgornjo lastnost nastavimo na false, je to smiselno, da je bila preslikava posodobljena in vozliščem ne bo poslal zahteve za posodobitev. Upoštevajte, da je to koristno le, če redno spreminjate veliko sprememb.

Optimizirano področje niti

Vozlišča ES imajo veliko področij niti, da se izboljša upravljanje niti v vozlišču. Vendar obstajajo omejitve glede tega, za koliko podatkov lahko poskrbi posamezna nit. Za sledenje tej vrednosti lahko uporabimo lastnost ES:

navojnica.v razsutem stanju.velikost_ čakalne vrste: 2000

To ES sporoči število zahtev v delčku, ki jih je v čakalni vrsti mogoče izvršiti v vozlišču, če ni na voljo niti za obdelavo zahteve. Če je število nalog večje od te vrednosti, boste dobili a RemoteTransportException. Višja kot je ta vrednost, večja količina prostora za kup bo potrebna na vašem vozlišču in tudi JVM kup bo porabljen. Prav tako morate imeti pripravljeno kodo, če bo vrnjena ta izjema.

Zaključek

V tej lekciji smo preučili, kako lahko izboljšamo uspešnost Elasticsearch-a, tako da se izognemo pogostim in ne tako pogostim napakam, ki jih ljudje naredijo. Preberite več člankov Elasticsearch o LinuxHint.

Nadzirajte in upravljajte gibanje miške med več monitorji v sistemu Windows 10
Upravitelj miške z dvojnim zaslonom vam omogoča nadzor in konfiguriranje gibanja miške med več monitorji, tako da upočasni gibanje blizu meje. Windows...
WinMouse vam omogoča prilagajanje in izboljšanje premikanja kazalca miške v računalniku z operacijskim sistemom Windows
Če želite izboljšati privzete funkcije kazalca miške, uporabite brezplačno programsko opremo WinMouse. Dodaja več funkcij, s pomočjo katerih boste kar...
Levi gumb miške ne deluje v sistemu Windows 10
Če s prenosnikom ali namiznim računalnikom uporabljate namensko miško, vendar gumb miške z levim klikom ne deluje v operacijskem sistemu Windows 10/8/...