{"id":82734,"date":"2020-05-24T13:42:22","date_gmt":"2020-05-24T11:42:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch"},"modified":"2020-05-24T13:42:22","modified_gmt":"2020-05-24T11:42:22","slug":"optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","title":{"rendered":"Highload-projekti koormuse optimeerimine ElasticSearchi abil","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, Habr! Minu nimi on Maksim Vasiljev, olen anal\u00fc\u00fctik ja projektijuht ettev\u00f5ttes FINCH. T\u00e4na tahaksin r\u00e4\u00e4kida, kuidas suudame ElasticSearchi abil t\u00f6\u00f6delda 15 miljonit p\u00e4ringut kuue minutiga ning optimeerida igap\u00e4evase koormuse \u00fchele meie kliendi veebilehtedest. Kahjuks peame olude t\u00f5ttu j\u00e4\u00e4ma nimedeta, kuna meil on non-disclosure agreement (NDA), loodame, et artikli sisu sellest ei kannata. Alustame.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Kuidas projekt on korraldatud<\/h2>\n<p>\nMeie tagaplaanil loome teenuseid, mis tagavad meie kliendi veebisaitide ja mobiilirakenduse toimimise. \u00dcldstruktuuri saab n\u00e4ha skeemilt:<\/p>\n<p><img decoding=\"async\" alt=\"Highload-projekti koormuse optimeerimine ElasticSearchi abil\" src=\"\/wp-content\/uploads\/2020\/05\/7bda10a9965163c2b175b501f50bc342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00f6\u00f6 k\u00e4igus t\u00f6\u00f6tleme suurt hulka tehinguid: ostud, v\u00e4ljamaksed, kasutajate saldooperatsioonid, mille kohta hoiame palju logisid, samuti impordime ja eksportime neid andmeid v\u00e4listesse s\u00fcsteemidesse. <\/p>\n<p>Samuti toimuvad vastupidised protsessid, kus saame andmeid kliendilt ja edastame need kasutajatele. Lisaks on olemas ka maksete ja boonuste programmidega seotud protsessid.<\/p>\n<h2>L\u00fchike taustalugu<\/h2>\n<p>\nAlgul kasutati ainsana andmete salvestamiseks PostgreSQL-i. Selle standardsete andmebaaside eeliste hulka kuuluvad tehingute olemasolu, arendatud andmevaliku keel ja lai integreerimist\u00f6\u00f6riistade komplekt; koos hea tootlikkusega rahuldasid need meie vajadusi pikemat aega. <\/p>\n<p>Me hoidsime Postgresis absoluutselt k\u00f5iki andmeid: tehingutest kuni uudisteni. Kuid kasutajate arv kasvas, samas suurenenud ka p\u00e4ringute arv.<\/p>\n<p><i>Kuna m\u00f5ista, oli 2017. aastal ainult lauaveebisaidil aastane seansside arv 131 miljonit. 2018. aastal 125 miljonit. 2019. aastal taas 130 miljonit. Lisage sinna veel 100\u2013200 miljonit mobiiliversiooni ja mobiilirakenduse seansse, ja te saate tohutu p\u00e4ringute arvu. <\/i><\/p>\n<p>Projekti kasvu t\u00f5ttu ei suudnud Postgres enam koormusega hakkama saada, me ei j\u00f5udnud j\u00e4rgi \u2014 ilmnes palju erinevaid p\u00e4ringute, mille jaoks me ei suutnud luua piisavalt indekseid. <\/p>\n<p>Me m\u00f5istsime, et on vajadus teiste andmesalvestuslahenduste j\u00e4rele, mis suudaksid rahuldada meie vajadusi ja v\u00e4hendada PostgreSQL-i koormust. Vaatasime v\u00f5imalike variantidena Elasticsearchi ja MongoDB-d. Viimane j\u00e4i alla j\u00e4rgmistes punktides:<\/p>\n<ol>\n<li>Aeglane indekseerimise kiirus andmemahu kasvades. Elasticu kiirus ei s\u00f5ltu andmemahust.<\/li>\n<li>Puudub t\u00e4isteksti otsing<\/li>\n<\/ol>\n<p>\nNii valisime endale Elasticu ja valmistusime \u00fcleminekuks. <\/p>\n<h2>\u00dcleminek Elasticule<\/h2>\n<p>\n1. Alustasime \u00fcleminekut m\u00fc\u00fcgipunktide otsinguteenusest. Meie kliendil on kokku umbes 70 000 m\u00fc\u00fcgikohta ning nende hulgas on vajalik mitu t\u00fc\u00fcpi otsingut veebilehel ja rakenduses:<\/p>\n<ul>\n<li>Tekstip\u00f5hine otsing asula nime j\u00e4rgi<\/li>\n<li>Geot\u00f6\u00f6tlus antud raadiuses mingist punktist. N\u00e4iteks, kui kasutaja soovib n\u00e4ha, millised m\u00fc\u00fcgikohad on tema kodust l\u00e4himad.<\/li>\n<li>Otsing antud ruudu piires \u2013 kasutaja joonistab kaardil ruudu ja talle n\u00e4idatakse k\u00f5iki punkte selles raadiuses. <\/li>\n<li>Otsing t\u00e4iendavate filtrite p\u00f5hjal. M\u00fc\u00fcgikohad erinevad \u00fcksteisest oma tootevalikute poolest. <\/li>\n<\/ul>\n<p>\nOrganisatsiooni kontekstis asub meil Postgres'is andmeallikas nii kaardi kui uudiste jaoks ning Elasticis tehakse originaalsetest andmetest Snapshot'e. Alguses ei tule Postgres k\u00f5igi kriteeriumide otsinguga toime. Lisaks oli palju indekseid, mis v\u00f5isid omavahel kattuda, mis t\u00f5ttu j\u00e4i Postgres'i planeerija segadusse ja ei m\u00f5istnud, millist indeksit kasutada. <\/p>\n<p>J\u00e4rgmine oligi uudiste osa. Igal p\u00e4eval ilmuvad veebilehele avaldused ning et kasutajad ei kaotaks teabevoos suunda, on oluline andmete sorteerimine enne esitamist. Selle jaoks on vajalik otsing: veebilehel saab otsida tekstip\u00f5histe vasteid ja samas rakendada t\u00e4iendavaid filtreid, kuna need on samuti tehtud l\u00e4bi Elastic'i. <\/p>\n<p>Seej\u00e4rel korraldasime tehingute t\u00f6\u00f6tlemise \u00fcmber. Kasutajad saavad veebilehelt osta teatud kaupu ja osaleda auhindade loosimises. P\u00e4rast selliseid oste t\u00f6\u00f6tleme me suures mahus andmeid, eriti n\u00e4dalavahetusel ja p\u00fchade ajal. V\u00f5rdluseks, kui tavap\u00e4evadel on ostude arv umbes 1,5-2 miljonit, siis p\u00fchade ajal v\u00f5ib see number ulatuda 53 miljoni juurde.<\/p>\n<p>Kuna andmed tuleb t\u00f6\u00f6tada l\u00e4bi v\u00f5imalikult l\u00fchikese ajaga \u2014 kasutajad ei armasta tulemusi mitu p\u00e4eva oodata. Postgres puhul ei ole selliseid t\u00e4htaegu v\u00f5imalik saavutada \u2014 me saime sageli lukustusi, ja seni kuni me t\u00f6\u00f6tlesime k\u00f5iki p\u00e4ringuid, ei saanud kasutajad kontrollida, kas nad said auhindu v\u00f5i mitte. See ei ole \u00e4ri jaoks hea, seega t\u00f5stsime t\u00f6\u00f6tluse Elasticsearchi.<\/p>\n<h2>Perioodilisus<\/h2>\n<p>\nPraegu on uuenduste seadistus s\u00fcndmustel p\u00f5hinev, j\u00e4rgmiste tingimustega:<\/p>\n<ol>\n<li>M\u00fc\u00fcgikohtadega. Niipea kui saame andmeid v\u00e4lisest allikast, k\u00e4ivitame kohe uuenduse. <\/li>\n<li>Uudised. Kui veebilehel muudetakse m\u00f5nda uudist, saadetakse see automaatselt Elastic'usse.<\/li>\n<\/ol>\n<p>\nSiin tasub veel kord r\u00e4\u00e4kida Elasticu eelistest. Postgres'is peab p\u00e4ringu saatmisel ootama, kuni see \u00f5iglaselt t\u00f6\u00f6tleb k\u00f5ik kirjed. Elastic's saab saata 10 tuhat kirjet ja kohe alustada t\u00f6\u00f6d, ootamata, kuni kirjed k\u00f5igile Shard'idele jaotatakse. Muidugi v\u00f5ib m\u00f5ni Shard v\u00f5i Replica andmeid kohe mitte n\u00e4ha, kuid varsti on k\u00f5ik saadaval.<\/p>\n<h2>Integreerimise viisid<\/h2>\n<p>\nElastic'uga integreerimiseks on 2 v\u00f5imalust:<\/p>\n<ol>\n<li>TCP-natiivklienti kaudu. Natiivne draiver kaob j\u00e4rk-j\u00e4rgult: seda enam ei toetata ja selle s\u00fcntaks on v\u00e4ga ebamugav. Seet\u00f5ttu kasutame seda praktiliselt mitte ja p\u00fc\u00fcame sellest t\u00e4ielikult loobuda.<\/li>\n<li>HTTP-liidese kaudu, milles saab kasutada nii JSON-p\u00e4ringuid kui ka Lucene\u2019i s\u00fcntaksit. Viimane on tekstimootor, mida kasutab Elastic. Sellisel variandil saame Batch v\u00f5imaluse l\u00e4bi JSON-p\u00e4ringute HTTP kaudu. Just seda varianti p\u00fc\u00fcame kasutada.<\/li>\n<\/ol>\n<p>\nHTTP-liidese t\u00f5ttu saame kasutada raamatukogusid, mis pakuvad as\u00fcnkroonset HTTP-kliendi rakendust. Saame kasutada Batch'i ja as\u00fcnkroonse API eeliseid, mis l\u00f5puks annab k\u00f5rge j\u00f5udluse, mis aitas v\u00e4ga suurte kampaaniate p\u00e4evadel (sellest allpool)<\/p>\n<p>M\u00f5ned numbrid v\u00f5rdlemiseks: <\/p>\n<ul>\n<li>Kasutajate salvestamine, kes said auhindu Postgresis 20 voos ilma grupeerimise: 460713 kirjet 42 sekundi jooksul<\/li>\n<li>Elastic + reaktiivne klient 10 voo + partiid 1000 elementi: 596749 kirjet 11 sekundi jooksul<\/li>\n<li>Elastic + reaktiivne klient 10 voo + partiid 1000 elementi: <b>23801684 kirjet 4 minuti jooksul<\/b><\/li>\n<\/ul>\n<p>\nPraegu oleme kirjutanud HTTP p\u00e4ringute halduri, mis koostab JSON-i, nagu Batch\/Batch mitte, ja saadab selle l\u00e4bi mistahes HTTP kliendi, s\u00f5ltumata raamatukogust. Samuti on v\u00f5imalik valida, kas saata p\u00e4ringud s\u00fcnkroonselt v\u00f5i as\u00fcnkroonselt.<\/p>\n<p>M\u00f5ningates integratsioonides kasutame me endiselt ametlikku transportkliendi, kuid see on vaid l\u00e4hitulevikus toimuva refaktoreerimise k\u00fcsimus. Sellegipoolest kasutatakse t\u00f6\u00f6tlemiseks meie enda klienti, mis on \u00fcles ehitatud Spring WebClient'i baasil.<\/p>\n<p><img decoding=\"async\" alt=\"Highload-projekti koormuse optimeerimine ElasticSearchi abil\" src=\"\/wp-content\/uploads\/2020\/05\/112bf3261c93ce585d8559b420e79f64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Suur kampaania<\/h2>\n<p>\nKord aastas toimub projektis suur kampaania kasutajatele \u2014 see on see Hiilakoormus, kuna sel ajal t\u00f6\u00f6tame samaaegselt k\u00fcmnete miljonite kasutajatega.<\/p>\n<p>Tavaliselt esinevad koormuse tipud p\u00fchade ajal, kuid see kampaania on hoopis teisel tasemel. Eelmisel aastal, kampaania p\u00e4eval, m\u00fc\u00fcsime 27 580 890 kaupa. Andmete t\u00f6\u00f6tlemine kests viis \u00fcle poole tunni, mis tekitas kasutajate seas ebamugavust. Kasutajad said osalemise eest auhindu, kuid selgeks sai, et protsessi tuleb kiirendada. <\/p>\n<p>2019. aasta alguses otsustasime, et vajame ElasticSearch'i. Kogu aasta korraldasime saadud andmete t\u00f6\u00f6tlemise Elasticus ja nende edastamise mobiilirakenduse ja veebisaidi API-le. L\u00f5puks j\u00e4rgmisel aastal kampaania ajal t\u00f6\u00f6tlesime <b>15 131 783 kirjet 6 minuti jooksul. <\/b><\/p>\n<p>Kuna meil on palju soovijaid osta kaupu ja osaleda loosimistel, on see ajutine lahendus. Praegu saadame v\u00e4rsket teavet Elasticusse, kuid tulevikus plaanime arhiivida eelmiste kuude andmed Postgres'i, kui p\u00fcsivasse salvestusse. Et mitte ummistada Elasticu indeksi, millel on samuti oma piirangud.<\/p>\n<h2>Kokkuv\u00f5tted\/j\u00e4reldused<\/h2>\n<p>\nK\u00e4esoleval hetkel oleme Elasticusse viinud k\u00f5ik teenused, mida soovisime, ja n\u00fc\u00fcd oleme teinud pausi. Praegu ehitame p\u00f5hikindla salvestuse peale Postgres'is indeksit Elasticus, mis v\u00f5tab enda alla kasutajate koormuse.<\/p>\n<p>Tulevikus plaanime teenuste \u00fcleviimist, kui m\u00f5istame, et andmete p\u00e4ringud muutuvad liiga mitmekesisteks ja otsitakse piiramatul hulgal veerge. See on juba \u00fclesanne, mis ei sobi Postgres'ile.<\/p>\n<p>Kui meil on vaja t\u00e4isteksti otsingut v\u00f5i kui meil on palju erinevaid otsingukriteeriume, siis teame juba, et seda tuleb t\u00f5lkida Elasticusse.<\/p>\n<h2>\u2318\u2318\u2318<\/h2>\n<p>\nAit\u00e4h, et lugesite. Kui teie ettev\u00f5ttes kasutatakse samuti ElasticSearch'i ja teil on oma rakenduste n\u00e4iteid, siis jagage neid. Oleks huvitav teada, kuidas teised seda teevad \ud83d\ude42<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/503214\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u043c \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 FINCH. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ElasticSearch, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c 15 \u043c\u043b\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 6 \u043c\u0438\u043d\u0443\u0442 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0438\u043c\u0451\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 NDA, \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82735,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u043c \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 FINCH. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ElasticSearch, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c 15 \u043c\u043b\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 6 \u043c\u0438\u043d\u0443\u0442 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0438\u043c\u0451\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 NDA, \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 Highload-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ElasticSearch | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u043c \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 FINCH. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ElasticSearch, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c 15 \u043c\u043b\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 6 \u043c\u0438\u043d\u0443\u0442 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0438\u043c\u0451\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 NDA, \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-24T11:42:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-24T11:42:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Highload-projekti koormuse optimeerimine ElasticSearch'i abil | ProHoster","description":"Tere, Habr! Minu nimi on Maksim Vasiljev, olen anal\u00fc\u00fctik ja projektijuht FINCH'is. T\u00e4na tahaksin r\u00e4\u00e4kida, kuidas ElasticSearch'i abil suutsime k\u00e4sitleda 15 miljonit p\u00e4ringut 6 minuti jooksul ja optimeerida meie kliendi igap\u00e4evast koormust. Kahjuks tuleb nimedest ilma j\u00e4\u00e4da, kuna meil on NDA, loodame, et","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 Highload-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ElasticSearch | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0430\u043a\u0441\u0438\u043c \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u043c \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 FINCH. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ElasticSearch, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c 15 \u043c\u043b\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 6 \u043c\u0438\u043d\u0443\u0442 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0438\u043c\u0451\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 NDA, \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-24T11:42:22+00:00","article:modified_time":"2020-05-24T11:42:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82734","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:32:25","updated":"2022-09-28 21:13:07"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/82734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=82734"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/82734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/82735"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=82734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=82734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=82734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}