{"id":294849,"date":"2019-11-19T15:00:26","date_gmt":"2019-11-19T15:00:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=294849"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=294849","title":{"rendered":"Vue Storefront: \u0417\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 ES"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\">\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0441\u0442 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438. \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/475940\/\">\u043f\u0435\u0440\u0432\u043e\u0439<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/476022\/\">\u0432\u0442\u043e\u0440\u043e\u0439<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u043f\u043e\u0434\u043d\u044f\u043b \u0444\u0440\u043e\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440, api-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0434\u0432\u0430 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (Elasticsearch &amp; Redis), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f api-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e Magento-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043c\u043e\u0451 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 VSF-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0448\u0430\u0433\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441. PWA-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u043e\u0439\u043d\u0443\u044e \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443. \u041f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435 \u0441 \u0442\u0435\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432 \u043c\u043e\u0451\u043c Magento-\u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u041b\u044e\u0431\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0442\u043e\u043f\u0442\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6k\/hu\/sm\/6khusmzqtpw-bguvx2sochy2ic0.png\" alt=\"\u041a\u0414\u041f\u0412\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e Magento-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Vue StoreFront \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u0435\u043c\u043e-\u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u043d\u043e \u0434\u043b\u044f <a href=\"https:\/\/habr.com\/ru\/post\/475940\/#comment_20889772\">\u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438<\/a> \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"cel\">\u0426\u0435\u043b\u044c<\/h1>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u0430\u0447\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 Magento-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 VSF-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"shemka\">\u0421\u0445\u0435\u043c\u043a\u0430<\/h1>\n<p>  <\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 VSF \u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u043b \u0432\u043e\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xs\/gg\/oc\/xsggoc99nj1o0act4ixs-oz4a8q.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<h1 id=\"rabochee-okruzhenie\">\u0420\u0430\u0431\u043e\u0447\u0435\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b medium-\u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Linux Ubuntu 18.04 LTS 64-bit (2x 2198 MHz CPU, 4 GB RAM, 10GB disk), \u0442.\u043a. small-\u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043f\u043e\u0434\u0442\u043e\u0440\u043c\u0430\u0436\u0438\u0432\u0430\u043b\u0430 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 <code>vue-storefront<\/code>. \u0412\u0440\u044f\u0434 \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e 4 GB \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043a\u0438 \u0432 2 \u0440\u0430\u0437\u0430 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c 2 GB.<\/p>\n<p>  <\/p>\n<h1 id=\"predyduschie-etapy\">\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u044d\u0442\u0430\u043f\u044b<\/h1>\n<p>  <\/p>\n<p>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">~\/init.sh<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/usr\/bin\/env\/bash #  Exit immediately if a command exits with a non-zero status. set -e  ## ======================================================================== # Configuration variables ## ======================================================================== HOST_VSF=\"185.19.28.48\" # VSF Server (contains Front\/API servers, Elasticsearch &amp; Redis services)  ## ======================================================================== # Update current packages and install new ones ## ======================================================================== #     nodejs &amp; yarn curl -sL https:\/\/deb.nodesource.com\/setup_12.x | sudo -E bash - curl -sL https:\/\/dl.yarnpkg.com\/debian\/pubkey.gpg | sudo apt-key add - sudo add-apt-repository \"deb https:\/\/dl.yarnpkg.com\/debian\/ stable main\" #     Elasticsearch curl -sL https:\/\/artifacts.elastic.co\/GPG-KEY-elasticsearch | sudo apt-key add - # use ElasticSearch v5.x # (see https:\/\/github.com\/DivanteLtd\/vue-storefront-api\/blob\/master\/docker\/elasticsearch\/Dockerfile) echo \"deb https:\/\/artifacts.elastic.co\/packages\/5.x\/apt stable main\" | sudo tee -a \/etc\/apt\/sources.list.d\/elastic-5.x.list  # Upgrade current packages and install new: sudo apt update sudo apt upgrade -y sudo apt install -y nodejs yarn openjdk-11-jre-headless elasticsearch redis-server sudo npm install pm2@latest -g  # Change file permissions on user's home (`.confiig` folder is created under root permissions`) sudo chown -R \"${USER}\" ~  ## ======================================================================== # Clone VSF applications ## ======================================================================== cd ~ git clone https:\/\/github.com\/DivanteLtd\/vue-storefront.git git clone https:\/\/github.com\/DivanteLtd\/vue-storefront-api.git  ## ======================================================================== # Configure services and apps ## ======================================================================== sudo cp \/etc\/elasticsearch\/elasticsearch.yml \/etc\/elasticsearch\/elasticsearch.yml.orig cat &lt;&lt;EOM | sudo tee \/etc\/elasticsearch\/elasticsearch.yml # see https:\/\/github.com\/DivanteLtd\/vue-storefront-api\/blob\/master\/docker\/elasticsearch\/config\/elasticsearch.yml cluster.name: \"docker-cluster\" network.host: 0.0.0.0 discovery.zen.minimum_master_nodes: 1 discovery.type: single-node EOM  sudo cp \/etc\/redis\/redis.conf \/etc\/redis\/redis.conf.orig cat &lt;&lt;EOM | sudo tee \/etc\/redis\/redis.conf # is composed from `redis.conf.orig` bind 0.0.0.0 port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize yes supervised no pidfile \/var\/run\/redis\/redis-server.pid loglevel notice logfile \/var\/log\/redis\/redis-server.log databases 16 EOM  cat &lt;&lt;EOM | tee ~\/vue-storefront\/config\/local.json {   \"server\": {     \"host\": \"0.0.0.0\",     \"port\": 3000   },   \"redis\": {     \"host\": \"${HOST_VSF}\",     \"port\": 6379,     \"db\": 0   },   \"graphql\": {     \"host\": \"${HOST_VSF}\",     \"port\": 8080   },   \"api\": {     \"url\": \"http:\/\/${HOST_VSF}:8080\"   },   \"elasticsearch\": {     \"indices\": [       \"vue_storefront_catalog\"     ]   } } EOM  cat &lt;&lt;EOM | tee ~\/vue-storefront-api\/config\/local.json {   \"server\": {     \"host\": \"0.0.0.0\",     \"port\": 8080   },   \"elasticsearch\": {     \"host\": \"localhost\",     \"port\": 9200   },   \"redis\": {     \"host\": \"localhost\",     \"port\": 6379   } } EOM  ## ======================================================================== # Build apps ## ======================================================================== cd ~\/vue-storefront yarn install yarn build cd ~\/vue-storefront-api yarn install yarn build  ## ======================================================================== # Start services and apps ## ======================================================================== sudo service elasticsearch start sudo service redis-server start cd ~\/vue-storefront &amp;&amp; yarn start cd ~\/vue-storefront-api &amp;&amp; yarn start<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h1 id=\"varianty-integracii\">\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438<\/h1>\n<p>  <\/p>\n<p>\u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u044f \u043d\u0430\u0448\u0451\u043b \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Magento-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u0438 VSF:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer\">magento2-vsbridge-indexer<\/a>: Magento-\u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a Magento-\u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 Elasticsearch \u043f\u0440\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438;<\/li>\n<li><a href=\"https:\/\/github.com\/DivanteLtd\/mage2vuestorefront\">mage2vuestorefront<\/a>: \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Magento \u0447\u0435\u0440\u0435\u0437 Web API \u0438 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0432 Elasticsearch;<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u042f \u043f\u043e\u043a\u0430 \u043e\u043f\u0443\u0441\u043a\u0430\u044e \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 Vue StoreFront \u0432 Magento.<\/p>\n<p>  <\/p>\n<p>\u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u043e\u043b\u0435\u0435 \u0436\u0438\u0432\u043e\u0439, \u0447\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439, \u0434\u0430 \u0438 \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 <a href=\"https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer#divante-vuestorefrontindexer-extension-for-magento2\">\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434:<\/p>\n<p>  <\/p>\n<blockquote><p>Please do use this module instead of mage2vuestorefront if You experience any issues regarding indexing performance. Both projects are currently supported.<\/p><\/blockquote>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (<code>mage2vuestorefront<\/code>) \u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e, \u0445\u043e\u0442\u044f \u043d\u0430 \u043c\u043e\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u0432\u044b\u0448\u0435 \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0451\u043d.<\/p>\n<p>  <\/p>\n<h1 id=\"vs-bridge\">VS Bridge<\/h1>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer#installationgetting-started\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/a> Magento-\u043c\u043e\u0434\u0443\u043b\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ composer config repositories.divante vcs https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer $ composer require divante\/magento2-vsbridge-indexer $ composer config repositories.divante vcs https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer-msi $ composer require divante\/magento2-vsbridge-indexer-msi<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4s\/jy\/4w\/4sjy4ww7rkcwskn7vwawmlm8-xs.png\" alt=\"mage indexes\"><\/p>\n<p>  <\/p>\n<h2 id=\"konfiguraciya-vs-bridge\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f VS Bridge<\/h2>\n<p>  <\/p>\n<h3 id=\"sekciya-general-settings\">\u0421\u0435\u043a\u0446\u0438\u044f &#171;General Settings&#187;:<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wj\/ks\/g4\/wjksg4vzfyrq8dn8nxlzpmxif50.png\" alt=\"general\"><\/p>\n<p>  <\/p>\n<h3 id=\"sekciya-elasticsearch-client\">\u0421\u0435\u043a\u0446\u0438\u044f &#171;Elasticsearch Client&#187;:<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vk\/6z\/qh\/vk6zqh_hsf55p5ymchynkaqn-e0.png\" alt=\"elasticsearch\"><\/p>\n<p>  <\/p>\n<h3 id=\"sekciya-indices-settings\">\u0421\u0435\u043a\u0446\u0438\u044f &#171;Indices Settings&#187;:<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/br\/p9\/60\/brp960xlz4a8sf1tmyn6df41vj8.png\" alt=\"indicies\"><\/p>\n<p>  <\/p>\n<h3 id=\"sekciya-redis-cache-settings\">\u0421\u0435\u043a\u0446\u0438\u044f &#171;Redis Cache Settings&#187;:<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ca\/bc\/6i\/cabc6iqejhniepi--_4uzw3mj9i.png\" alt=\"redis\"><\/p>\n<p>  <\/p>\n<h3 id=\"sekciya-catalog-settings\">\u0421\u0435\u043a\u0446\u0438\u044f &#171;Catalog Settings&#187;:<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bg\/rd\/dx\/bgrddx_cjvf2ct7ergm5fr64pru.png\" alt=\"catalog\"><\/p>\n<p>  <\/p>\n<h2 id=\"zalivka-dannyh-v-elasticsearch\">\u0417\u0430\u043b\u0438\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Elasticsearch<\/h2>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Magento \u0432 Elasticsearch <a href=\"https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer#running-the-full-indexation\">\u0437\u0430\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f<\/a> \u043f\u0440\u0438 \u0438\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ bin\/magento indexer:reindex ... Vsbridge Product Indexer index has been rebuilt successfully in 00:00:01 Vsbridge Category Indexer index has been rebuilt successfully in 00:00:00 Vsbridge Attributes Indexer index has been rebuilt successfully in 00:00:02 Vsbridge Cms Block Indexer index has been rebuilt successfully in 00:00:00 Vsbridge Cms Page Indexer index has been rebuilt successfully in 00:00:04 Vsbridge Review Indexer index has been rebuilt successfully in 00:00:00 Vsbridge Tax Rule Indexer index has been rebuilt successfully in 00:00:00<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"proverka-zalivki-dannyh\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ curl \"http:\/\/89.145.166.192:9200\/_cat\/indices?pretty&amp;v\" health status index                               uuid                   pri rep docs.count docs.deleted store.size pri.store.size yellow open   vue_storefront_magento_2_1574139073 x-Ft7Lt6RCu073dBWuvbvQ   5   1        295            0      1.7mb          1.7mb yellow open   vue_storefront_magento_1_1574139076 yGlA_GGqQu-T0vyxrLE07A   5   1        268            0      1.2mb          1.2mb<\/code><\/pre>\n<p>  <\/p>\n<h1 id=\"konfigurirovanie-vue-storefront-i-vue-storefront-api\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 <code>vue-storefront<\/code> \u0438 <code>vue-storefront-api<\/code><\/h1>\n<p>  <\/p>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 VS Bridge \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0432 Elasticsearch \u0432\u044b\u0431\u0440\u0430\u043d <code>vue_storefront_magento<\/code>, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f ID \u0432\u0438\u0442\u0440\u0438\u043d\u044b:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/or\/qd\/cm\/orqdcmhpx2hmapbf4930zjntldk.png\" alt=\"indicies name\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 <a href=\"https:\/\/github.com\/DivanteLtd\/magento2-vsbridge-indexer#magento-configuration\">\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a> \u0438 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 default-\u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c (<code>~\/vue-storefront\/config\/default.json<\/code>):<\/p>\n<p>  <\/p>\n<pre><code class=\"json\">{   \"elasticsearch\": {     \"index\": \"vue_storefront_catalog\"   },   \"storeViews\": {     \"de\": {       \"elasticsearch\": {         \"index\": \"vue_storefront_catalog_de\"       }     },     \"it\": {       \"elasticsearch\": {         \"index\": \"vue_storefront_catalog_it\"       }     }   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e (<code>~\/vue-storefront\/config\/local.json<\/code>):<\/p>\n<p>  <\/p>\n<pre><code class=\"json\">  \"elasticsearch\": {     \"index\": \"vue_storefront_magento_1\"   },   \"storeViews\": {     \"de\": {       \"elasticsearch\": {         \"index\": \"vue_storefront_magento_1\"       }     },     \"it\": {       \"elasticsearch\": {         \"index\": \"vue_storefront_magento_2\"       }     }   }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0430 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0434\u043b\u044f api-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 (&#171;):<\/p>\n<p>  <\/p>\n<pre><code class=\"json\">  \"elasticsearch\": {     ...     \"indices\": [       \"vue_storefront_magento_1\",       \"vue_storefront_magento_2\"     ]   }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0444\u0440\u043e\u043d\u0442\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"json\">  \"elasticsearch\": {     \"index\": \"vue_storefront_magento\"   }<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043d\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u041b\u0438\u0431\u043e \u0432 Elasticsearch&#8217;\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 <code>vue_storefront_magento<\/code>, \u043b\u0438\u0431\u043e \u0432 \u043a\u043e\u0434\u0435 \u0444\u0440\u043e\u043d\u0442\u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0443\u0442\u0430\u043d\u043e. <\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0434\u0435\u043a\u0441\u044b \u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u043d\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 VS Bridge, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0436\u0438\u0434\u0430\u043b, \u0447\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043d\u043e \u043d\u0435\u0442, \u0432\u0441\u0451 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0441\u0443\u0444\u0444\u0438\u043a\u0441 <code>_1<\/code> \u0432 <code>elasticsearch.index<\/code> \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0444\u0440\u043e\u043d\u0442\u0430.<\/p>\n<p>  <\/p>\n<h1 id=\"peresborka-i-zapusk-prilozheniy\">\u041f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/h1>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ pm2 stop all $ cd ~\/vue-storefront &amp;&amp; yarn build &amp;&amp; yarn start $ cd ~\/vue-storefront-api &amp;&amp; yarn build &amp;&amp; yarn start<\/code><\/pre>\n<p>  <\/p>\n<p>PWA-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 &#171;<a href=\"http:\/\/89.145.166.192:3000\/\">http:\/\/89.145.166.192:3000\/<\/a>&#187; (<em>\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044f &#171;\u0443\u0431\u0438\u043b&#187; \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c, \u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442<\/em>) \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0447\u0442\u043e \u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<h1 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c &#171;Magento-to-VSF&#187; \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0418\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043a\u0430\u043a \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0442\u0430\u043a \u0438 \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0442\u0430\u043a). \u041d\u0430\u043f\u0440\u044f\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a 5.x \u0432\u0435\u0440\u0441\u0438\u0438 Elasticsearch&#8217;\u0430. \u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e downgrade&#8217;\u0438\u0442\u044c\u0441\u044f \u0441 7.x \u043d\u0430 6.x \u0438 \u0441 6.x \u043d\u0430 5.x \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c &#171;VS Bridge&#187; \u043d\u0430\u0447\u0430\u043b \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 ES. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e VSF \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 5.x \u0438 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u044b Elasticsearch&#8217;\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c &#171;\u043f\u044f\u0442\u0451\u0440\u043e\u0447\u043a\u0443&#187;?<\/li>\n<li>\u0425\u0430\u0440\u0434\u043a\u043e\u0434 \u0434\u0435\u043c\u043e-\u0432\u0438\u0442\u0440\u0438\u043d \u0432 default-\u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0444\u0440\u043e\u043d\u0442\u0430. \u041f\u043e-\u0438\u0434\u0435\u0435, \u0432 default-\u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u0435\u043c\u043e-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 <code>.\/config\/local.json<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u043a\u0430\u043a\u0438\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 (\u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430) \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0439.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b, \u043a\u043b\u0438\u043a\u0430\u0439\u0442\u0435 \u043f\u043e \u043c\u043e\u0435\u0439 \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u043b\u044b\u043a\u0435, \u0438 \u0434\u0430\u0439 \u043c\u043d\u0435 \u0411\u043e\u0433 \u0441\u0438\u043b \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433. VSF, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0451\u043c \u2014 \u043a\u0430\u043a \u043f\u043e \u0431\u043e\u043b\u043e\u0442\u0443 \u0445\u043e\u0434\u0438\u0442\u044c. \u041e\u0434\u043d\u0443 \u043d\u043e\u0433\u0443 \u0434\u043e\u0441\u0442\u0430\u043b, \u0434\u0440\u0443\u0433\u0430\u044f \u0437\u0430\u0432\u044f\u0437\u043b\u0430.<\/p>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/476316\/\"> https:\/\/habr.com\/ru\/post\/476316\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\">\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0441\u0442 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438. \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/475940\/\">\u043f\u0435\u0440\u0432\u043e\u0439<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/post\/476022\/\">\u0432\u0442\u043e\u0440\u043e\u0439<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u043f\u043e\u0434\u043d\u044f\u043b \u0444\u0440\u043e\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440, api-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0434\u0432\u0430 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (Elasticsearch &amp; Redis), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f api-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e Magento-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043c\u043e\u0451 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 VSF-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0448\u0430\u0433\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441. PWA-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u043e\u0439\u043d\u0443\u044e \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0443. \u041f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435 \u0441 \u0442\u0435\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432 \u043c\u043e\u0451\u043c Magento-\u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u041b\u044e\u0431\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0442\u043e\u043f\u0442\u0430\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6k\/hu\/sm\/6khusmzqtpw-bguvx2sochy2ic0.png\" alt=\"\u041a\u0414\u041f\u0412\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e Magento-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Vue StoreFront \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u0435\u043c\u043e-\u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u043d\u043e \u0434\u043b\u044f <a href=\"https:\/\/habr.com\/ru\/post\/475940\/#comment_20889772\">\u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438<\/a> \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-294849","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/294849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=294849"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/294849\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=294849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=294849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=294849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}