{"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\/sq\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","title":{"rendered":"Optimizimi i ngarkes\u00ebs n\u00eb nj\u00eb projekt Highload me ndihm\u00ebn e ElasticSearch","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, Habr! Emri im \u00ebsht\u00eb Maksim Vasiliev, punoj si analist dhe menaxher projektesh n\u00eb FINCH. Sot do t\u00eb flas p\u00ebr at\u00eb se si me ndihm\u00ebn e ElasticSearch, arrit\u00ebm t\u00eb p\u00ebrpunojm\u00eb 15 milion k\u00ebrkesa p\u00ebr 6 minuta dhe t\u00eb optimizojm\u00eb ngarkesat ditore n\u00eb faqen e nj\u00ebrit prej klient\u00ebve tan\u00eb. Fatkeq\u00ebsisht, do t\u00eb duhet t\u00eb q\u00ebndrojm\u00eb pa emra, pasi kemi nj\u00eb NDA, shpresojm\u00eb q\u00eb p\u00ebrmbajtja e artikullit t\u00eb mos vuaj\u00eb p\u00ebr k\u00ebt\u00eb. Le t\u00eb vazhdojm\u00eb.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Si \u00ebsht\u00eb organizuar projekti<\/h2>\n<p>\nN\u00eb backend-in ton\u00eb krijojm\u00eb sh\u00ebrbime q\u00eb sigurojn\u00eb funksionimin e faqeve t\u00eb internetit dhe aplikacionit mobil t\u00eb klientit ton\u00eb. Struktur\u00ebn e p\u00ebrgjithshme mund ta shihni n\u00eb diagram:<\/p>\n<p><img decoding=\"async\" alt=\"Optimizimi i ngarkes\u00ebs n\u00eb nj\u00eb projekt Highload me ndihm\u00ebn e ElasticSearch\" src=\"\/wp-content\/uploads\/2020\/05\/7bda10a9965163c2b175b501f50bc342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb procesin e pun\u00ebs ne p\u00ebrpunojm\u00eb nj\u00eb num\u00ebr t\u00eb madh transaksionesh: blerjeve, pagesave, operacioneve me balancet e p\u00ebrdoruesve, p\u00ebr t\u00eb cilat ruajm\u00eb shum\u00eb log-e, si dhe importojm\u00eb dhe eksportojm\u00eb k\u00ebto t\u00eb dh\u00ebna n\u00eb sisteme t\u00eb jashtme. <\/p>\n<p>Ka gjithashtu procese t\u00eb kund\u00ebrta, p\u00ebr t\u00eb cilat ne marrim t\u00eb dh\u00ebna nga klienti dhe i d\u00ebrgojm\u00eb ato p\u00ebrdoruesve. P\u00ebrve\u00e7 k\u00ebsaj, ekzistojn\u00eb gjithashtu procese p\u00ebr menaxhimin e pagesave dhe programeve t\u00eb bonusit.<\/p>\n<h2>Nj\u00eb historik i shkurt\u00ebr<\/h2>\n<p>\nFillimisht, si depo e vetme t\u00eb dh\u00ebnash, ne p\u00ebrdorim PostgreSQL. Avantazhet standarde t\u00eb DBMS: ekzistenca e transaksioneve, nj\u00eb gjuh\u00eb e zhvilluar p\u00ebr p\u00ebrzgjedhjen e t\u00eb dh\u00ebnave, nj\u00eb gam\u00eb e gjer\u00eb mjeteve p\u00ebr integrim; bashk\u00eb me performanc\u00ebn e mir\u00eb, p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb p\u00ebrmbush\u00ebn k\u00ebrkesat tona. <\/p>\n<p>Ne ruajm\u00eb n\u00eb Postgres t\u00eb gjitha t\u00eb dh\u00ebnat: nga transaksionet deri te lajmet. Por numri i p\u00ebrdoruesve po rritej dhe me t\u00eb rritej edhe numri i k\u00ebrkesave.<\/p>\n<p><i>P\u00ebr t\u00eb kuptuar, numri vjetor i sesioneve n\u00eb vitin 2017 vet\u00ebm n\u00eb faqen desktop \u2014 131 milion. N\u00eb vitin 2018 \u2014 125 milion. Vitin 2019 p\u00ebrs\u00ebri 130 milion. Shtoni aty edhe 100-200 milion nga versioni mobil i faqes dhe aplikacioni mobil, dhe do t\u00eb merrni nj\u00eb num\u00ebr kolosal k\u00ebrkesash. <\/i><\/p>\n<p>Me rritjen e projektit, Postgres nuk po arrinte m\u00eb t\u00eb p\u00ebrballonte ngarkes\u00ebn, ne ishim duke ngecur \u2014 u shfaq nj\u00eb num\u00ebr i madh k\u00ebrkesash t\u00eb ndryshme, p\u00ebr t\u00eb cilat nuk arrit\u00ebm t\u00eb krijonim nj\u00eb num\u00ebr t\u00eb mjaftuesh\u00ebm indekse. <\/p>\n<p>Ne kuptonim se kishte nevoj\u00eb p\u00ebr depo t\u00eb tjera t\u00eb dh\u00ebnash, q\u00eb do t\u00eb plot\u00ebsonin nevojat tona dhe do t\u00eb leht\u00ebsonin ngarkes\u00ebn nga PostgreSQL. Si mund\u00ebsi shqyrtuam Elasticsearch dhe MongoDB. T\u00eb fundit humbte p\u00ebr k\u00ebto pika:<\/p>\n<ol>\n<li>Shpejt\u00ebsia e ngadalt\u00eb e indeksimit me rritjen e volumit t\u00eb t\u00eb dh\u00ebnave n\u00eb indekse. Te Elastic, shpejt\u00ebsia nuk varet nga volumi i t\u00eb dh\u00ebnave.<\/li>\n<li>Nuk ka k\u00ebrkim me tekst t\u00eb plot\u00eb<\/li>\n<\/ol>\n<p>\nK\u00ebshtu ne zgjodh\u00ebm Elastic p\u00ebr vete dhe u p\u00ebrgatit\u00ebm p\u00ebr kalimin. <\/p>\n<h2>Kalimi n\u00eb Elastic<\/h2>\n<p>\n1. Ne filluam kalimin me sh\u00ebrbimin e k\u00ebrkimit t\u00eb pikave t\u00eb shitjes. Klienti yn\u00eb ka gjithsej rreth 70,000 pikash shitjeje dhe nevojiten disa lloje k\u00ebrkimi n\u00eb faqe dhe n\u00eb aplikacion:<\/p>\n<ul>\n<li>K\u00ebrkim me tekst mbi emrin e vendit<\/li>\n<li>K\u00ebrkimi gjeo n\u00eb nj\u00eb rreth t\u00eb caktuar nga nj\u00eb pik\u00eb. P\u00ebr shembull, n\u00ebse p\u00ebrdoruesi d\u00ebshiron t\u00eb shoh\u00eb se cilat pika shitjeje jan\u00eb m\u00eb af\u00ebr sht\u00ebpis\u00eb s\u00eb tij.<\/li>\n<li>K\u00ebrkimi n\u00eb nj\u00eb katror t\u00eb caktuar \u2013 p\u00ebrdoruesi \u00e7izmon nj\u00eb katror n\u00eb hart\u00eb dhe i shfaqen t\u00eb gjitha pikat n\u00eb k\u00ebt\u00eb rreth. <\/li>\n<li>K\u00ebrkimi me filtrat shtes\u00eb. Pikat e shitjes ndryshojn\u00eb nga nj\u00ebra-tjetra sipas asortimentit <\/li>\n<\/ul>\n<p>\nN\u00ebse flasim p\u00ebr organizimin, at\u00ebher\u00eb n\u00eb Postgres ne kemi burimin e t\u00eb dh\u00ebnave si p\u00ebr hart\u00ebn, ashtu edhe p\u00ebr lajmet, nd\u00ebrsa n\u00eb Elastic b\u00ebhen Snapshot'\u00eb nga t\u00eb dh\u00ebnat origjinale. Arsyeja \u00ebsht\u00eb se fillimisht Postgres nuk mund t\u00eb p\u00ebrballonte k\u00ebrkimin sipas t\u00eb gjith\u00eb kritereve. Nuk ishte vet\u00ebm se kishte shum\u00eb indekse, ato mund t\u00eb ishin edhe t\u00eb nd\u00ebrthurura, prandaj planifikuesi i Postgres humbiste dhe nuk kuptonte se cili indeks t\u00eb p\u00ebrdorte. <\/p>\n<p>2. Tjetra n\u00eb radh\u00eb ishte seksioni i lajmeve. N\u00eb faqe publikohen \u00e7do dit\u00eb publikime, n\u00eb m\u00ebnyr\u00eb q\u00eb p\u00ebrdoruesi t\u00eb mos humbas\u00eb n\u00eb rrjedh\u00ebn e informacionit, t\u00eb dh\u00ebnat duhet t\u00eb renditen p\u00ebrpara dor\u00ebzimit. P\u00ebr k\u00ebt\u00eb k\u00ebrkohet k\u00ebrkimi: n\u00eb faqe mund t\u00eb k\u00ebrkosh sipas p\u00ebrputhjes s\u00eb teksteve, dhe gjithashtu t\u00eb aktivizosh filtrat shtes\u00eb, pasi ato gjithashtu jan\u00eb krijuar p\u00ebrmes Elastic. <\/p>\n<p>3. M\u00eb pas na u transferua p\u00ebrpunimi i transaksioneve. P\u00ebrdoruesit mund t\u00eb blejn\u00eb nj\u00eb produkt t\u00eb caktuar n\u00eb faqe dhe t\u00eb marrin pjes\u00eb n\u00eb loj\u00ebra me \u00e7mime. Pas k\u00ebtyre blerjeve, ne p\u00ebrpunojm\u00eb nj\u00eb num\u00ebr t\u00eb madh t\u00eb dh\u00ebnash, ve\u00e7an\u00ebrisht n\u00eb fundjav\u00eb dhe festat. P\u00ebr krahasim, n\u00eb dit\u00ebt e zakonshme numri i blerjeve p\u00ebrb\u00ebn rreth 1.5-2 milion\u00eb, nd\u00ebrsa n\u00eb festat numri mund t\u00eb arrij\u00eb deri n\u00eb 53 milion\u00eb.<\/p>\n<p>N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, t\u00eb dh\u00ebnat duhet t\u00eb p\u00ebrpunohen n\u00eb nj\u00eb koh\u00eb minimale \u2014 p\u00ebrdoruesit nuk e p\u00eblqejn\u00eb t\u00eb presin disa dit\u00eb p\u00ebr rezultat. N\u00ebp\u00ebrmjet Postgres nuk mund t\u00eb arriheshin k\u00ebto afate \u2014 ne shpesh merrnim bllokime, dhe derisa ne p\u00ebrpunonim t\u00eb gjitha k\u00ebrkesat, p\u00ebrdoruesit nuk mund t\u00eb verifikonin n\u00ebse kishin fituar \u00e7mime apo jo. Kjo nuk \u00ebsht\u00eb shum\u00eb e k\u00ebndshme p\u00ebr biznesin, prandaj e transferuam p\u00ebrpunimin n\u00eb Elasticsearch.<\/p>\n<h2>Frekvenca<\/h2>\n<p>\nAktualisht, p\u00ebrdit\u00ebsimet jan\u00eb t\u00eb vendosura ngjarjesh, sipas kushteve t\u00eb m\u00ebposhtme:<\/p>\n<ol>\n<li>Pikat e shitjes. Sapo marrim t\u00eb dh\u00ebna nga nj\u00eb burim jasht\u00eb, ne menj\u00ebher\u00eb nisim p\u00ebrdit\u00ebsimin. <\/li>\n<li>Lajmet. Sapo n\u00eb \u0441\u0430\u0439\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0442 \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u043d\u043e\u0432\u043e\u0441\u0442\u044c, \u043e\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 Elastic.<\/li>\n<\/ol>\n<p>\nK\u00ebtu p\u00ebrs\u00ebri duhet mentioned p\u00ebrmbledhja e Elastic. N\u00eb Postgres, gjat\u00eb d\u00ebrgimit t\u00eb k\u00ebrkes\u00ebs, duhet t\u00eb presim derisa ai t\u00eb p\u00ebrpunoj\u00eb ndersh\u00ebm t\u00eb gjitha regjistrimet. N\u00eb Elastic, mund t\u00eb d\u00ebrgoni 10 mij\u00eb regjistrime dhe menj\u00ebher\u00eb t\u00eb filloni pun\u00ebn, pa pritur q\u00eb regjistrimet t\u00eb shp\u00ebrndahen n\u00eb t\u00eb gjitha Shards. Sigurisht, ndonj\u00eb Shard ose Replica mund t\u00eb mos e shohin t\u00eb dh\u00ebnat menj\u00ebher\u00eb, por shum\u00eb shpejt gjith\u00e7ka do t\u00eb jet\u00eb e disponueshme.<\/p>\n<h2>M\u00ebnyrat e integrimit<\/h2>\n<p>\nKa 2 m\u00ebnyra integrimi me Elastic:<\/p>\n<ol>\n<li>N\u00ebp\u00ebrmjet klientit natyral p\u00ebr TCP. Drejtuesi natyror po shkruhet gradualisht: nuk mb\u00ebshtetet m\u00eb, ka nj\u00eb sintaks\u00eb shum\u00eb t\u00eb pak\u00ebndshme. Prandaj, ne nuk e p\u00ebrdorim praktikisht dhe p\u00ebrpiqemi t\u00eb heqim dor\u00eb nga ai.<\/li>\n<li>N\u00ebp\u00ebrmjet nd\u00ebrfaqes HTTP, n\u00eb t\u00eb cil\u00ebn mund t\u00eb p\u00ebrdorim si k\u00ebrkesa JSON, ashtu edhe sintaks\u00ebn Lucene. Kjo e fundit \u00ebsht\u00eb nj\u00eb motor teksti q\u00eb p\u00ebrdor Elastic. N\u00eb k\u00ebt\u00eb variant ne marrim mund\u00ebsin\u00eb e Batch p\u00ebrmes k\u00ebrkesave JSON p\u00ebrmes HTTP. Ky variant ne p\u00ebrpiqemi ta p\u00ebrdorim.<\/li>\n<\/ol>\n<p>\nFal\u00eb nd\u00ebrfaqes HTTP, ne mund t\u00eb p\u00ebrdorim libra q\u00eb ofrojn\u00eb nj\u00eb realizim asinkron t\u00eb klientit HTTP. Ne mund t\u00eb shfryt\u00ebzojm\u00eb p\u00ebrpar\u00ebsin\u00eb e Batch dhe API asinkron, q\u00eb n\u00eb fund na jep nj\u00eb performanc\u00eb t\u00eb lart\u00eb, e cila ndihmoi shum\u00eb n\u00eb dit\u00ebt e nj\u00eb promovimi t\u00eb madh (p\u00ebr k\u00ebt\u00eb m\u00eb posht\u00eb)<\/p>\n<p>Pak numra p\u00ebr krahasim: <\/p>\n<ul>\n<li>Ruajtja e p\u00ebrdoruesve q\u00eb mor\u00ebn \u00e7mimet n\u00eb Postgres n\u00eb 20 rrjedha pa grupime: 460713 regjistrime n\u00eb 42 sekonda<\/li>\n<li>Elastic + klient reaktiv n\u00eb 10 rrjedha + batch n\u00eb 1000 elemente: 596749 regjistrime n\u00eb 11 sekonda<\/li>\n<li>Elastic + klient reaktiv n\u00eb 10 rrjedha + batch n\u00eb 1000 elemente: <b>23801684 regjistrime n\u00eb 4 minuta<\/b><\/li>\n<\/ul>\n<p>\nAktualisht, ne kemi shkruar nj\u00eb menaxher k\u00ebrkesash p\u00ebr HTTP, i cili nd\u00ebrt\u00f3n JSON, si Batch\/n\u00eb Batch dhe e d\u00ebrgon p\u00ebrmes \u00e7do klienti HTTP pavar\u00ebsisht nga biblioteka. Gjithashtu, mund t\u00eb zgjidhni t\u00eb d\u00ebrgoni k\u00ebrkesat me sinkron ose asinkron.<\/p>\n<p>N\u00eb disa integrime ne ende p\u00ebrdorim klientin zyrtar t\u00eb transportit, por kjo \u00ebsht\u00eb vet\u00ebm nj\u00eb \u00e7\u00ebshtje e ristrukturimit t\u00eb af\u00ebrt. Nd\u00ebrkoh\u00eb, p\u00ebr p\u00ebrpunimin p\u00ebrdoret nj\u00eb klient i brendsh\u00ebm, i nd\u00ebrtuar mbi baz\u00ebn e Spring WebClient.<\/p>\n<p><img decoding=\"async\" alt=\"Optimizimi i ngarkes\u00ebs n\u00eb nj\u00eb projekt Highload me ndihm\u00ebn e ElasticSearch\" src=\"\/wp-content\/uploads\/2020\/05\/112bf3261c93ce585d8559b420e79f64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Promovim i madh<\/h2>\n<p>\nNj\u00eb her\u00eb n\u00eb vit, projekti organizon nj\u00eb promovim t\u00eb madh p\u00ebr p\u00ebrdoruesit \u2014 kjo \u00ebsht\u00eb ajo q\u00eb quhet Highload, pasi gjat\u00eb k\u00ebtyre dit\u00ebve punojm\u00eb me dhjet\u00ebra miliona p\u00ebrdorues n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb.<\/p>\n<p>Zakonisht kulmet e ngarkesave ndodhin gjat\u00eb festave, por kjo promovim \u00ebsht\u00eb nj\u00eb nivel krejt\u00ebsisht tjet\u00ebr. N\u00eb vitin e kaluar, n\u00eb dit\u00ebn e promovimit, shit\u00ebm 27 580 890 nj\u00ebsi t\u00eb produkteve. T\u00eb dh\u00ebnat u p\u00ebrpunuan p\u00ebr m\u00eb shum\u00eb se gjysm\u00eb ore, q\u00eb shkaktoi shqet\u00ebsim te p\u00ebrdoruesit. P\u00ebrdoruesit mor\u00ebn \u00e7mime p\u00ebr pjes\u00ebmarrje, por b\u00ebhej e qart\u00eb se procesi duhet t\u00eb shpejtohej. <\/p>\n<p>N\u00eb fillim t\u00eb vitit 2019, ne vendos\u00ebm se na nevojitej ElasticSearch. Gjat\u00eb nj\u00eb viti organizuam p\u00ebrpunimin e t\u00eb dh\u00ebnave q\u00eb merrnim n\u00eb Elastic dhe shfaqjen e tyre n\u00eb API-n\u00eb e aplikacionit mobil dhe n\u00eb faqen e internetit. N\u00eb p\u00ebrfundim, vitin e ardhsh\u00ebm gjat\u00eb promovimit ne p\u00ebrpunuam <b>15 131 783 regjistrime brenda 6 minutash. <\/b><\/p>\n<p>Duke pasur parasysh se ka shum\u00eb d\u00ebshira p\u00ebr t\u00eb bler\u00eb produkte dhe p\u00ebr t\u00eb marr\u00eb pjes\u00eb n\u00eb t\u00ebrheqjen e \u00e7mimeve, kjo \u00ebsht\u00eb nj\u00eb mas\u00eb p\u00ebrkoh\u00ebsore. Tani ne po i d\u00ebrgojm\u00eb informacionet aktuale n\u00eb Elastic, por n\u00eb t\u00eb ardhmen planifikojm\u00eb t\u00eb transferojm\u00eb informacionin arkivor p\u00ebr muajt e kaluar n\u00eb Postgres, si nj\u00eb magazin\u00eb t\u00eb p\u00ebrhershme. P\u00ebr t\u00eb mos z\u00ebn\u00eb indekset Elastic, q\u00eb gjithashtu ka kufizimet e veta.<\/p>\n<h2>P\u00ebrfundimi \/ konkluzionet<\/h2>\n<p>\nN\u00eb k\u00ebt\u00eb moment, ne kemi transferuar n\u00eb Elastic t\u00eb gjith\u00eb sh\u00ebrbimet q\u00eb donim dhe p\u00ebr tani e kemi marr\u00eb nj\u00eb pauz\u00eb. Tani po nd\u00ebrtojm\u00eb nj\u00eb indeks n\u00eb Elastic mbi magazin\u00ebn ton\u00eb t\u00eb q\u00ebndrueshme n\u00eb Postgres, e cila merr mbi vete ngarkes\u00ebn e p\u00ebrdoruesve.<\/p>\n<p>N\u00eb t\u00eb ardhmen planifikojm\u00eb t\u00eb transferojm\u00eb sh\u00ebrbimet kur kuptojm\u00eb se k\u00ebrkesat p\u00ebr t\u00eb dh\u00ebna b\u00ebhen shum\u00eb t\u00eb larmishme dhe k\u00ebrkohen n\u00eb numra t\u00eb pakufizuar kolonesh. Kjo tashm\u00eb \u00ebsht\u00eb nj\u00eb detyr\u00eb q\u00eb nuk \u00ebsht\u00eb p\u00ebr Postgres.<\/p>\n<p>N\u00ebse na nevojitet k\u00ebrkimi p\u00ebrmbajt\u00ebsor n\u00eb funksionin ose n\u00ebse kemi shum\u00eb kritere t\u00eb ndryshme k\u00ebrkimi, at\u00ebher\u00eb ne tashm\u00eb e dim\u00eb se duhet ta transferojm\u00eb n\u00eb Elastic.<\/p>\n<h2>\u2318\u2318\u2318<\/h2>\n<p>\nFaleminderit q\u00eb e lexuat. N\u00ebse kompanin\u00eb tuaj gjithashtu p\u00ebrdorin ElasticSearch dhe kan\u00eb raste t\u00eb tyre t\u00eb realizimit, na thoni. Do t\u00eb ishte interesante t\u00eb m\u00ebsojm\u00eb si e b\u00ebjn\u00eb t\u00eb tjer\u00ebt \ud83d\ude42<br \/>\n<br \/>Burimi: <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 5.0.2 - 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.\" \/>\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\/sq\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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\udd47Optimizimi i ngarkes\u00ebs n\u00eb projektin Highload me ndihm\u00ebn e ElasticSearch | ProHoster","description":"P\u00ebrsh\u00ebndetje, Habr! M\u00eb quajn\u00eb Maksim Vasiliev, un\u00eb punoj si analist dhe menaxher projektesh n\u00eb FINCH.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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.","og:url":"https:\/\/prohoster.info\/sq\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/82734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=82734"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/82734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/82735"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=82734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=82734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=82734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}