{"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\/hu\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","title":{"rendered":"Highload-projektekkel kapcsolatos terhel\u00e9soptimaliz\u00e1l\u00e1s az ElasticSearch seg\u00edts\u00e9g\u00e9vel","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hell\u00f3, Habr! A nevem Makszim Vasiljev, elemz\u0151 \u00e9s projektmenedzser vagyok a FINCH-n\u00e9l. Ma szeretn\u00e9k mes\u00e9lni arr\u00f3l, hogyan tudtunk az ElasticSearch seg\u00edts\u00e9g\u00e9vel 15 milli\u00f3 lek\u00e9rdez\u00e9st feldolgozni 6 perc alatt, \u00e9s optimaliz\u00e1lni egy \u00fcgyfel\u00fcnk weboldal\u00e1nak napi terhel\u00e9s\u00e9t. Sajnos n\u00e9vn\u00e9lk\u00fcl kell maradnunk, mivel NDA-nk van, rem\u00e9lj\u00fck, hogy a cikk tartalma ett\u0151l nem szenved. Induljunk!<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hogyan m\u0171k\u00f6dik a projekt<\/h2>\n<p>\nA backend\u00fcnk\u00f6n olyan szolg\u00e1ltat\u00e1sokat hozunk l\u00e9tre, amelyek biztos\u00edtj\u00e1k \u00fcgyfel\u00fcnk weboldal\u00e1nak \u00e9s mobilalkalmaz\u00e1s\u00e1nak m\u0171k\u00f6d\u00e9s\u00e9t. Az \u00e1ltal\u00e1nos strukt\u00far\u00e1t az al\u00e1bbi \u00e1br\u00e1n l\u00e1thatj\u00e1tok:<\/p>\n<p><img decoding=\"async\" alt=\"Highload-projektekkel kapcsolatos terhel\u00e9soptimaliz\u00e1l\u00e1s az ElasticSearch seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2020\/05\/7bda10a9965163c2b175b501f50bc342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA munk\u00e1nk sor\u00e1n nagy mennyis\u00e9g\u0171 tranzakci\u00f3t dolgozunk fel: v\u00e1s\u00e1rl\u00e1sokat, kifizet\u00e9seket, felhaszn\u00e1l\u00f3i egyenlegekkel kapcsolatos m\u0171veleteket, amelyekhez sok napl\u00f3t t\u00e1rolunk, \u00e9s ezen adatokat import\u00e1ljuk \u00e9s export\u00e1ljuk k\u00fcls\u0151 rendszerekbe. <\/p>\n<p>Vannak visszafel\u00e9 ir\u00e1nyul\u00f3 folyamatok is, amikor adatokat kapunk az \u00fcgyf\u00e9lt\u0151l, \u00e9s ezeket a felhaszn\u00e1l\u00f3knak tov\u00e1bb\u00edtjuk. Ezen k\u00edv\u00fcl l\u00e9teznek folyamatok a fizet\u00e9sekkel \u00e9s a b\u00f3nuszprogramokkal kapcsolatban is.<\/p>\n<h2>R\u00f6vid el\u0151t\u00f6rt\u00e9net<\/h2>\n<p>\nKezdetben egyed\u00fcli adatb\u00e1zisk\u00e9nt a PostgreSQL-t haszn\u00e1ltuk. Ennek a DBMS-nek a szok\u00e1sos el\u0151nyei: tranzakci\u00f3k, fejlett adatever\u00edt\u00e9si nyelv, sz\u00e9lesk\u00f6r\u0171 integr\u00e1ci\u00f3s eszk\u00f6zk\u00e9szlet; a j\u00f3 teljes\u00edtm\u00e9nnyel kombin\u00e1lva hossz\u00fa id\u0151n kereszt\u00fcl kiel\u00e9g\u00edtette ig\u00e9nyeinket. <\/p>\n<p>A Postgres-ben t\u00e1roltunk minden adatot: tranzakci\u00f3kt\u00f3l kezdve a h\u00edrekig. De a felhaszn\u00e1l\u00f3k sz\u00e1ma n\u00f6vekedett, \u00e9s vele egy\u00fctt a lek\u00e9rdez\u00e9sek sz\u00e1ma is.<\/p>\n<p><i>Hogy pontosabb k\u00e9pet kapjatok, 2017-ben a desktop weboldalon \u00e9vente 131 milli\u00f3 \u00fcl\u00e9s volt. 2018-ban 125 milli\u00f3. 2019-ben ism\u00e9t 130 milli\u00f3. Ezen k\u00edv\u00fcl adjatok hozz\u00e1 m\u00e9g 100-200 milli\u00f3t a mobil weboldal \u00e9s a mobilalkalmaz\u00e1s forgalm\u00e1b\u00f3l, \u00e9s hatalmas lek\u00e9rdez\u00e9smennyis\u00e9get kaptok. <\/i><\/p>\n<p>A projekt n\u00f6veked\u00e9s\u00e9vel a Postgres m\u00e1r nem b\u00edrta el a terhel\u00e9st, nem tudtunk l\u00e9p\u00e9st tartani \u2014 rengeteg k\u00fcl\u00f6nb\u00f6z\u0151 lek\u00e9rdez\u00e9s jelent meg, amelyekhez nem tudtunk elegend\u0151 indexet l\u00e9trehozni. <\/p>\n<p>Tudtuk, hogy sz\u00fcks\u00e9g van m\u00e1s adatb\u00e1zisokra, amelyek kiel\u00e9g\u00edtik ig\u00e9nyeinket \u00e9s enyh\u00edtik a PostgreSQL terhel\u00e9s\u00e9t. Lehets\u00e9ges lehet\u0151s\u00e9gekk\u00e9nt fontol\u00f3ra vett\u00fck az Elasticsearch-t \u00e9s a MongoDB-t. Az ut\u00f3bbi h\u00e1tr\u00e1nyban volt a k\u00f6vetkez\u0151 szempontok miatt:<\/p>\n<ol>\n<li>A lass\u00fa indexel\u00e9si sebess\u00e9g a sindexekben l\u00e9v\u0151 adatok mennyis\u00e9g\u00e9nek n\u00f6veked\u00e9s\u00e9vel n\u0151. Az Elastic eset\u00e9ben a sebess\u00e9g nem f\u00fcgg az adatmennyis\u00e9gt\u0151l.<\/li>\n<li>Nincs teljes sz\u00f6veges keres\u00e9s<\/li>\n<\/ol>\n<p>\n\u00cdgy v\u00e1lasztottuk az Elastic-et, \u00e9s felk\u00e9sz\u00fclt\u00fcnk az \u00e1t\u00e1ll\u00e1sra. <\/p>\n<h2>\u00c1t\u00e1ll\u00e1s az Elastic-ra<\/h2>\n<p>\n1. Az \u00e1t\u00e1ll\u00e1st az \u00e9rt\u00e9kes\u00edt\u00e9si pontok keres\u0151szolg\u00e1ltat\u00e1s\u00e1val kezdt\u00fck. \u00dcgyfel\u00fcnk \u00f6sszesen k\u00f6r\u00fclbel\u00fcl 70 000 \u00e9rt\u00e9kes\u00edt\u00e9si ponttal rendelkezik, \u00e9s sz\u00fcks\u00e9g van k\u00fcl\u00f6nb\u00f6z\u0151 keres\u00e9si t\u00edpusokra a weboldalon \u00e9s az alkalmaz\u00e1sban:<\/p>\n<ul>\n<li>Sz\u00f6veges keres\u00e9s telep\u00fcl\u00e9sn\u00e9v alapj\u00e1n<\/li>\n<li>Geokeres\u00e9s meghat\u00e1rozott sug\u00e1rban egy pontt\u00f3l. P\u00e9ld\u00e1ul, ha a felhaszn\u00e1l\u00f3 l\u00e1tni szeretn\u00e9, mely \u00e9rt\u00e9kes\u00edt\u00e9si pontok vannak a legk\u00f6zelebb az otthon\u00e1hoz.<\/li>\n<li>Keres\u00e9s egy meghat\u00e1rozott n\u00e9gyzeten bel\u00fcl \u2013 a felhaszn\u00e1l\u00f3 k\u00f6rvonalaz egy n\u00e9gyzetet a t\u00e9rk\u00e9pen, \u00e9s megjelennek a pontok ebben a sug\u00e1rban. <\/li>\n<li>Keres\u00e9s tov\u00e1bbi sz\u0171r\u0151k szerint. Az \u00e9rt\u00e9kes\u00edt\u00e9si pontok elt\u00e9rhetnek a k\u00edn\u00e1lat alapj\u00e1n. <\/li>\n<\/ul>\n<p>\nHa a szervez\u00e9sr\u0151l besz\u00e9l\u00fcnk, a Postgres-ben a t\u00e9rk\u00e9pre \u00e9s a h\u00edrekre vonatkoz\u00f3 adatforr\u00e1s tal\u00e1lhat\u00f3, m\u00edg az Elastic-ben az eredeti adatok snapshotjai k\u00e9sz\u00fclnek. A helyzet az, hogy a Postgres eredetileg nem tudott megfelelni az \u00f6sszes krit\u00e9riumnak megfelel\u0151 keres\u00e9snek. Nemcsak sok index l\u00e9tezett, hanem ezek \u00e1tfed\u00e9sben is lehettek, ez\u00e9rt a Postgres \u00fctemez\u0151je elveszett, \u00e9s nem tudta, melyik indexet kellene haszn\u00e1lnia. <\/p>\n<p>2. A k\u00f6vetkez\u0151 a h\u00edrek szekci\u00f3ja volt. A weboldalon naponta jelennek meg publik\u00e1ci\u00f3k, hogy a felhaszn\u00e1l\u00f3 ne vesz\u00edtse el a fonalat az inform\u00e1ci\u00f3\u00e1radatban, a adatokat rendezni kell a megjelen\u00edt\u00e9s el\u0151tt. Erre van sz\u00fcks\u00e9g a keres\u00e9shez: a weboldalon sz\u00f6veges egyez\u00e9s alapj\u00e1n lehet keresni, \u00e9s k\u00f6zben tov\u00e1bbi sz\u0171r\u0151ket is lehet csatlakoztatni, mivel ezek is Elastic-en kereszt\u00fcl k\u00e9sz\u00fcltek. <\/p>\n<p>3. Ezut\u00e1n \u00e1ttelep\u00edtett\u00fck a tranzakci\u00f3k feldolgoz\u00e1s\u00e1t. A felhaszn\u00e1l\u00f3k bizonyos term\u00e9keket v\u00e1s\u00e1rolhatnak a weboldalon, \u00e9s r\u00e9szt vehetnek a nyerem\u00e9nyj\u00e1t\u00e9kban. Az ilyen v\u00e1s\u00e1rl\u00e1sok ut\u00e1n nagy mennyis\u00e9g\u0171 adatot dolgozunk fel, k\u00fcl\u00f6n\u00f6sen h\u00e9tv\u00e9g\u00e9n \u00e9s \u00fcnnepekkor. \u00d6sszehasonl\u00edt\u00e1sul, ha norm\u00e1l napokon a v\u00e1s\u00e1rl\u00e1sok sz\u00e1ma k\u00f6r\u00fclbel\u00fcl 1,5-2 milli\u00f3, \u00fcnnepekkor ez a sz\u00e1m el\u00e9rheti az 53 milli\u00f3t.<\/p>\n<p>Ekkor az adatokat minim\u00e1lis id\u0151n bel\u00fcl kell feldolgozni \u2014 a felhaszn\u00e1l\u00f3k nem szeretik v\u00e1rni, hogy napokig megkapj\u00e1k az eredm\u00e9nyt. A Postgres-en kereszt\u00fcl ilyen hat\u00e1rid\u0151ket nem lehetett betartani \u2014 gyakran kaptunk z\u00e1rol\u00e1sokat, \u00e9s am\u00edg az \u00f6sszes k\u00e9r\u00e9st feldolgoztuk, a felhaszn\u00e1l\u00f3k nem tudt\u00e1k ellen\u0151rizni, hogy nyertek-e. Ez nem t\u00fal kellemes az \u00fczlet sz\u00e1m\u00e1ra, ez\u00e9rt az adatfeldolgoz\u00e1st az Elasticsearch-re helyezt\u00fck \u00e1t.<\/p>\n<h2>Gyakoris\u00e1g<\/h2>\n<p>\nJelenleg az friss\u00edt\u00e9sek esem\u00e9ny alap\u00faak, a k\u00f6vetkez\u0151 felt\u00e9telek szerint:<\/p>\n<ol>\n<li>Elad\u00e1si pontok. Amint adatokat kapunk egy k\u00fcls\u0151 forr\u00e1sb\u00f3l, azonnal elind\u00edtjuk a friss\u00edt\u00e9st. <\/li>\n<li>H\u00edrek. Amint a weboldalon szerkesztenek egy h\u00edrt, az automatikusan elk\u00fcld\u00e9sre ker\u00fcl az Elasticbe.<\/li>\n<\/ol>\n<p>\nEz\u00fattal \u00e9rdemes megeml\u00edteni az Elastic el\u0151nyeit. A Postgres eset\u00e9ben a k\u00e9r\u00e9s elk\u00fcld\u00e9sekor meg kell v\u00e1rni, am\u00edg val\u00f3ban feldolgozza az \u00f6sszes bejegyz\u00e9st. Az Elasticben 10 ezer bejegyz\u00e9st k\u00fcldhet\u00fcnk egyszerre, \u00e9s azonnal elkezdhetj\u00fck a munk\u00e1t an\u00e9lk\u00fcl, hogy meg kellene v\u00e1rnunk, am\u00edg a bejegyz\u00e9sek eloszlanak az \u00f6sszes Shardon. Term\u00e9szetesen valamelyik Shard vagy Replika lehet, hogy azonnal nem l\u00e1tja az adatokat, de nagyon hamar minden el\u00e9rhet\u0151v\u00e9 v\u00e1lik.<\/p>\n<h2>Integr\u00e1ci\u00f3s lehet\u0151s\u00e9gek<\/h2>\n<p>\nK\u00e9t lehet\u0151s\u00e9g van az Elastic integr\u00e1ci\u00f3ra:<\/p>\n<ol>\n<li>A nat\u00edv kliensen kereszt\u00fcl TCP-n. A nat\u00edv meghajt\u00f3 fokozatosan elt\u0171nik: m\u00e1r nem t\u00e1mogatj\u00e1k, a szintaxisa nagyon k\u00e9nyelmetlen. Ez\u00e9rt gyakorlatilag nem haszn\u00e1ljuk, \u00e9s megpr\u00f3b\u00e1lunk teljesen lemondani r\u00f3la.<\/li>\n<li>HTTP interf\u00e9szen kereszt\u00fcl, amelyen JSON k\u00e9rd\u00e9seket \u00e9s Lucene szintaxist is haszn\u00e1lhatunk. Az ut\u00f3bbi egy sz\u00f6vegmotor, amelyet az Elastic haszn\u00e1l. Ilyen m\u00f3don Batch-t\u00edpust kapunk JSON k\u00e9rd\u00e9seken kereszt\u00fcl HTTP-n. Ezt a megold\u00e1st pr\u00f3b\u00e1ljuk alkalmazni.<\/li>\n<\/ol>\n<p>\nA HTTP interf\u00e9sznek k\u00f6sz\u00f6nhet\u0151en olyan k\u00f6nyvt\u00e1rakat haszn\u00e1lhatunk, amelyek aszinkron HTTP kliens megval\u00f3s\u00edt\u00e1st ny\u00fajtanak. Haszn\u00e1lhatjuk a Batch \u00e9s aszinkron API el\u0151ny\u00e9t, ami v\u00e9gs\u0151 soron magas teljes\u00edtm\u00e9nyt eredm\u00e9nyezett, amely nagyon seg\u00edtett a nagy akci\u00f3k idej\u00e9n (err\u0151l k\u00e9s\u0151bb).<\/p>\n<p>N\u00e9h\u00e1ny sz\u00e1m az \u00f6sszehasonl\u00edt\u00e1shoz: <\/p>\n<ul>\n<li>Felhaszn\u00e1l\u00f3k, akik nyerem\u00e9nyeket kaptak Postgresben 20 sz\u00e1lon csoportos\u00edt\u00e1s n\u00e9lk\u00fcl: 460713 bejegyz\u00e9s 42 m\u00e1sodperc alatt.<\/li>\n<li>Elastic + reakt\u00edv kliens 10 sz\u00e1lon + batch 1000 elemre: 596749 bejegyz\u00e9s 11 m\u00e1sodperc alatt.<\/li>\n<li>Elastic + reakt\u00edv kliens 10 sz\u00e1lon + batch 1000 elemre: <b>23801684 bejegyz\u00e9s 4 perc alatt.<\/b><\/li>\n<\/ul>\n<p>\nJelenleg \u00edrtunk egy HTTP lek\u00e9rdez\u00e9skezel\u0151t, amely JSON-t \u00e9p\u00edt, Batch\/nem Batch form\u00e1tumban, \u00e9s b\u00e1rmilyen HTTP kliensen kereszt\u00fcl k\u00fcld el, f\u00fcggetlen\u00fcl a k\u00f6nyvt\u00e1rt\u00f3l. Az is v\u00e1laszthat\u00f3, hogy szinkron vagy aszinkron m\u00f3don k\u00fcldj\u00fck el a lek\u00e9rdez\u00e9seket.<\/p>\n<p>N\u00e9h\u00e1ny integr\u00e1ci\u00f3ban m\u00e9g mindig haszn\u00e1ljuk a hivatalos transport klienst, de ez csak a legk\u00f6zelebbi refaktor\u00e1l\u00e1s k\u00e9rd\u00e9se. Ezenk\u00edv\u00fcl egy saj\u00e1t fejleszt\u00e9s\u0171 klienst haszn\u00e1lunk, amely a Spring WebClient alapjain nyugszik.<\/p>\n<p><img decoding=\"async\" alt=\"Highload-projektekkel kapcsolatos terhel\u00e9soptimaliz\u00e1l\u00e1s az ElasticSearch seg\u00edts\u00e9g\u00e9vel\" src=\"\/wp-content\/uploads\/2020\/05\/112bf3261c93ce585d8559b420e79f64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Nagy akci\u00f3<\/h2>\n<p>\n\u00c9vente egyszer nagyszab\u00e1s\u00fa akci\u00f3t szervez\u00fcnk a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra \u2014 ez a Highload, mivel ilyenkor egyszerre t\u00f6bb t\u00edzmilli\u00f3 felhaszn\u00e1l\u00f3val dolgozunk.<\/p>\n<p>\u00c1ltal\u00e1ban a forgalmi cs\u00facsok \u00fcnnepi id\u0151szakokban fordulnak el\u0151, de ez az akci\u00f3 \u2014 teljesen m\u00e1s szint. K\u00e9t \u00e9ve az akci\u00f3 napj\u00e1n 27 580 890 term\u00e9ket adtunk el. Az adatok feldolgoz\u00e1sa t\u00f6bb mint f\u00e9l \u00f3r\u00e1ig tartott, ami kellemetlens\u00e9get okozott a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra. A felhaszn\u00e1l\u00f3k nyerem\u00e9nyeket kaptak a r\u00e9szv\u00e9tel\u00fck\u00e9rt, de vil\u00e1goss\u00e1 v\u00e1lt, hogy a folyamatot gyors\u00edtani kell. <\/p>\n<p>2019 elej\u00e9n \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy sz\u00fcks\u00e9g van az ElasticSearch-ra. Egy \u00e9ven \u00e1t szervezt\u00fck az \u00e9rkez\u0151 adatok feldolgoz\u00e1s\u00e1t Elastic-ben, \u00e9s azok kiad\u00e1s\u00e1t a mobilalkalmaz\u00e1s API-j\u00e1n \u00e9s a weboldalon. Ennek eredm\u00e9nyek\u00e9ppen a k\u00f6vetkez\u0151 \u00e9vben az akci\u00f3 alatt <b>15 131 783 rekordot dolgoztunk fel 6 perc alatt. <\/b><\/p>\n<p>Mivel nagyon sokan szeretn\u00e9nek term\u00e9ket v\u00e1s\u00e1rolni \u00e9s r\u00e9szt venni a nyerem\u00e9nyj\u00e1t\u00e9kokon, ez egy \u00e1tmeneti int\u00e9zked\u00e9s. Jelenleg a legfrissebb inform\u00e1ci\u00f3kat az Elastic-be k\u00fcldj\u00fck, de a j\u00f6v\u0151ben tervezz\u00fck a m\u00falt h\u00f3napokra vonatkoz\u00f3 arch\u00edv inform\u00e1ci\u00f3k \u00e1tad\u00e1s\u00e1t a Postgres-be, mint \u00e1lland\u00f3 t\u00e1rol\u00f3ba. \u00cdgy elker\u00fclhetj\u00fck az Elastic index felhalmoz\u00f3d\u00e1s\u00e1t, amelynek szint\u00e9n megvannak a saj\u00e1t korl\u00e1tai.<\/p>\n<h2>K\u00f6vetkeztet\u00e9sek<\/h2>\n<p>\nJelenleg az Elastic-be \u00e1tkonvert\u00e1ltunk minden szolg\u00e1ltat\u00e1st, amit szerett\u00fcnk volna, \u00e9s most egy kis sz\u00fcnetet tartunk. Jelenleg a f\u0151 tart\u00f3s t\u00e1rol\u00f3 f\u00f6l\u00e9, a Postgres-be \u00e9p\u00edt\u00fcnk egy indexet Elastic-ben, amely felveszi a felhaszn\u00e1l\u00f3i terhel\u00e9st.<\/p>\n<p>A j\u00f6v\u0151ben tervezz\u00fck a szolg\u00e1ltat\u00e1sok \u00e1tad\u00e1s\u00e1t, ha \u00fagy \u00e9rezz\u00fck, hogy az adatok lek\u00e9rdez\u00e9se t\u00fals\u00e1gosan sokf\u00e9le \u00e9s korl\u00e1tlan sz\u00e1m\u00fa oszlopra keres\u00fcnk. Ez m\u00e1r nem a Postgres feladata.<\/p>\n<p>Ha sz\u00fcks\u00e9g\u00fcnk lesz teljes sz\u00f6veges keres\u00e9sre a funkcion\u00e1lisan, vagy ha sokf\u00e9le keres\u00e9si krit\u00e9riumunk lesz, akkor m\u00e1r tudjuk, hogy ezt \u00e1t kell vinn\u00fcnk az Elastic-be.<\/p>\n<h2>\u2318\u2318\u2318<\/h2>\n<p>\nK\u00f6sz\u00f6n\u00f6m, hogy elolvast\u00e1tok. Ha a c\u00e9getekben is haszn\u00e1ltok ElasticSearch-t, \u00e9s vannak saj\u00e1t megval\u00f3s\u00edt\u00e1si eseteitek, mes\u00e9ljetek r\u00f3la. \u00c9rdekes lenne tudni, hogy m\u00e1sokn\u00e1l hogyan m\u0171k\u00f6dik \ud83d\ude42<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47A terhel\u00e9s optimaliz\u00e1l\u00e1sa Highload projekten ElasticSearch seg\u00edts\u00e9g\u00e9vel | ProHoster","description":"Hell\u00f3, Habr! A nevem Makszim Vasiljev, elemz\u0151 \u00e9s projektmenedzser vagyok a FINCH-n\u00e9l.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/optimizacziya-nagruzki-na-highload-proekte-s-pomoshhyu-elasticsearch","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/82734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=82734"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/82734\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/82735"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=82734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=82734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=82734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}