MongoDB рдкреВрд░реНрдг рдкрд╛рда рд╕реЗ ElasticSearch рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛

рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ , рд▓рд╛рдЗрдХрд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП Google Chrome рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдордиреЗ ElasticSeach рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреЛрдЬ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рдЪ рдерд╛ рдЬрд┐рд╕рдиреЗ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЦреЛрдЬ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рджреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреНрд░реЛрдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред



рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдБ рдХрд┐ MongoDB + ElasticSeach рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдпрд╣ рдПрдХ рдЕрддреНрдпрдВрдд рдкреНрд░рднрд╛рд╡реА NoSQL рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ MongoDB рд╣реИ, рддреЛ ElasticSearch рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХреИрд╕реЗ рдХрд░реЗрдВред



рдереЛрдбрд╝рд╛ рдЗрддрд┐рд╣рд╛рд╕



рдЦреЛрдЬ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╕рд╛рд░ред рд╣рдорд╛рд░реА рд╣рдЬрд╛рд░реЛрдВ рдкрд╕рдВрджреЛрдВ рдХреЗ рдмреАрдЪ рдЬрд▓реНрджреА рд╕реЗ рдХреБрдЫ рдЦреЛрдЬрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред



рд╣рдореЗрдВ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдХреЛрдИ рдЧрд╣рд░рд╛ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рдерд╛, рдФрд░ рдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ MongoDB рдкреВрд░реНрдг рдкрд╛рда рдЦреЛрдЬ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 2.4 рдореЗрдВ рдкреВрд░реНрдг рдкрд╛рда рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЗрд╕рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЙрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдФрд░ рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред



рд╕рдордп рдмреАрддрддрд╛ рдЧрдпрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдврд╝рддрд╛ рдЧрдпрд╛ред рд╡рд╣ рд╕рдВрдЧреНрд░рд╣ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВред 2 рдорд┐рд▓рд┐рдпрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдореИрдВрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрдореА рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдХреЗ рд▓рдВрдмреЗ рдЙрджреНрдШрд╛рдЯрди рдФрд░ рдПрдХ рдЕрддреНрдпрдВрдд рдзреАрдореА рдЦреЛрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ред



рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдЦреЛрдЬ, рд╕реЛрд▓рд░ рдпрд╛ рд╢рд╛рдкрд┐рдирдХреНрд╕ рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдЦреЛрдЬ рднрдВрдбрд╛рд░ рдХреЛ рджреЗрдЦрд╛ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рддрдХ "рдЧрдбрд╝рдЧрдбрд╝рд╛рд╣рдЯ рдирд╣реАрдВ рд╣реЛрддреА, рддрдм рддрдХ рдХрд┐рд╕рд╛рди рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдЧрд╛ред"



рдЧрдбрд╝рдЧрдбрд╝рд╛рд╣рдЯ "2 рд╕рдкреНрддрд╛рд╣ рдкрд╣рд▓реЗ", рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдпрд╛рддрд╛рдпрд╛рдд рдореЗрдВ рддреЗрдЬ рд╡реГрджреНрдзрд┐ рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рдирдИ рд░реЗрд▓рд┐рдХ рдиреЗ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдбрд░рд╛рд╡рдиреЗ рдкрддреНрд░ рднреЗрдЬреЗ рдХрд┐ рдЖрд╡реЗрджрди рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЖрд╡реЗрджрди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд░реЛрдЧреА рдореГрдд рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬреАрд╡рд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред



рдПрдХ рддреНрд╡рд░рд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ HTTP рдЕрдиреБрд░реЛрдз MongoDB рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмрд╛рдж 504 рд╕реЗ рдЧрд┐рд░ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо MongoHQ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХрдВрд╕реЛрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдЗрд╕рдХрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЖрдпрд╛ред рдЖрдзрд╛рд░ рдХреЛ рд╕реАрдорд╛ рддрдХ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд╛рдВрддреНрд╡рдирд╛ рдЦреЛрд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓реЙрдХ рдХрд┐рдпрд╛ рд╣реБрдЖ% рдЖрдХрд╛рд╢-рдЙрдЪреНрдЪ 110 - 140% рддрдХ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ рд░рдЦрд╛ рдЧрдпрд╛, рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред



рдПрдХ рд╕реЗрд╡рд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреА рд╣реИ рд╡рд╣ рдмрд╣реБрдд рдХреБрдЫ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреВрд░реНрдг-рдкрд╛рда рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреА рдкреБрди: рдЧрдгрдирд╛ рдкрд░ рдЬреЛрд░ рджреЗрддреА рд╣реИ, рдпрд╣ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ, рдФрд░ рдХреБрдЫ рд╕реАрдорд╛рдУрдВ (рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕рд╣рд┐рдд) рддрдХ рдкрд╣реБрдВрдЪрдирд╛, рд╣рдо рдмрд╕ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдП рд╕реАрдорд╛ред



рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдкреВрд░реНрдг-рдкрд╛рда рд╕реВрдЪрдХрд╛рдВрдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд▓реЙрдХ рдХреА рдЧрдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕реЗрд╡рд╛ 0.7% рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рд╣рдореЗрдВ рдЕрд╕рд╣рдЬ "рдЦреЗрдж, рдЦреЛрдЬ рд░рдЦрд░рдЦрд╛рд╡ рдкрд░ рд╣реИ" рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдирд╛ рдерд╛ ...



рд╣рдо рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ ElasticSeach рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ



рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рдЖрдЬрдорд╛рдпрд╛ред рдЙрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдБ рд╣рдореЗрд╢рд╛ (рд╣реИ, рдФрд░ рд╣реЛрдЧрд╛) рдпреЛрдирд┐ ред



ElasticSeach рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд░рдирдЯрд╛рдЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



> sudo apt-get update > sudo apt-get install openjdk-6-jre > sudo add-apt-repository ppa:webupd8team/java > sudo apt-get install oracle-java7-installer
      
      





рддрдм рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ



 > java --version
      
      





рд▓реЛрдЪрджрд╛рд░ рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рдж рдЖрд╕рд╛рди рд╣реИред рдореИрдВ рдбреЗрдмрд┐рдпрди рдкреИрдХреЗрдЬ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд░реВрдк рдореЗрдВ рдпрд╣ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред



 > wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.deb > dpkg -i elasticsearch-1.1.1.deb
      
      





рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд╣ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ,



 > sudo update-rc.d elasticsearch defaults 95 10 > sudo /etc/init.d/elasticsearch start
      
      





рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рдирд╛ рдФрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛, рд╣рдореЗрдВ рдЗрд╕ рдЙрддреНрддрд░ рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИред



 { "ok" : true, "status" : 200, "name" : "Xavin", "version" : { "number" : "1.1.1", "build_hash" : "36897d07dadcb70886db7f149e645ed3d44eb5f2", "build_timestamp" : "2014-05-05T12:06:54Z", "build_snapshot" : false, "lucene_version" : "4.5.1" }, "tagline" : "You Know, for Search" }
      
      





рдкреВрд░реНрдг рддреИрдирд╛рддреА рдореЗрдВ рд▓рдЧрднрдЧ 10 рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред



рдЕрдм рдХреБрдЫ рдмрдЪрд╛рдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ



ElasticSearch рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рд▓реБрд╕реАрди рддрдХрдиреАрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рд╣реИ, рд╕рдмрд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рддрдХрдиреАрдХ, рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╕рдореНрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдЙрдЪреНрдЪ рдХреБрд╢рд▓ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд╢реНрд░рдо рдШрдВрдЯреЗ рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ, рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдорд╛рддреНрд░ рдордиреБрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИред



рдореИрдВ рд▓реЛрдЪрджрд╛рд░ рдФрд░ CounchDB рдХреЗ рдмреАрдЪ рдХреБрдЫ рд╕рдорд╛рдирддрд╛рдПрдВ рдвреВрдБрдврддрд╛ рд╣реВрдВ - HTTP API, рднреА рд╕реНрдХреАрдорд╛рд▓реЗрд╕, рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ред



рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдореИрдиреБрдЕрд▓ рдкрдврд╝рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ vidos рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП , рдЬрдм рддрдХ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХреИрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИред



рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВрдиреЗ рдирдВрдЧреЗ рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд▓реЗрдХрд┐рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ "рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдкрд░" рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рдбрдВрдк рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдореБрдЭреЗ MongoDB рд╕реЗ рдЕрдкрдиреЗ рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ ElasticSearch рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдУрд╡рд░рдЯреЗрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдЗрд╕ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрдкрдХрд░рдг рдмрдирд╛рдпрд╛ - рдЗрд▓рд╛рд╕реНрдЯрд░ ред рдПрд▓рд╛рд╕реНрдЯрд░ рдПрдХ рдиреЛрдб.рдЬреЗрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП MongoDB рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкреНрд░реА-рдХреНрд░рд┐рдПрдЯ рдХрд░рдХреЗ рдФрд░ рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдХреЗ рд╕реНрдЯреНрд░реАрдо рдХрд░рддрд╛ рд╣реИред



рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ (рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ), рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ 40 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж, MongoDB рдХреЗ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб ElasticSearch рдореЗрдВ рдереЗ, рдЖрдк рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЫрд╡рд┐



рдПрдХ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдмрдирд╛рдПрдБ



рдХреНрд╡реЗрд░реА рдбреАрдПрд╕рдПрд▓ , рд▓реЛрдЪрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ред рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреНрд╡рд╛рд░рд╛, рдпрд╣ рд╕рд╛рдзрд╛рд░рдг JSON рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЕрдиреБрднрд╡, рдЕрднреНрдпрд╛рд╕ рдФрд░ рдЬреНрдЮрд╛рди рд╣реИред рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдЕрднреА рддрдХ рдЙрди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрд╛ рдЧрдпрд╛:



 function fullTextItemSearch (user, query, paging, callback) { if (!query) { return callback(null, { data: [], nextPage: false }); } var page = paging.page || 1; elastic.search({ index: 'items', from: (page - 1) * paging.pageSize, size: paging.pageSize, body: { query: { filtered: { query: { 'query_string': { query: query }, }, filter: { term: { user: user.email } } } } } }, function (err, resp) { if (err) { return callback(err); } var items = resp.hits.hits.map(function (hit) { return hit._source; }); callback(null, {data: items, nextPage: items.length === paging.pageSize}); }); }
      
      





рдпрд╣ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЕрдиреБрд░реЛрдз рд╣реИ, рдкреЗрдЬрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдПрдХрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореИрдВ рд╣реИрд░рд╛рди рдерд╛ рдХрд┐ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдХрд┐рддрдирд╛ рд╢рд╛рдВрдд рд╣реИред рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп 30-40ms рдерд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рднреА рдареАрдХ-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛, рдореИрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдкреНрд░рд╕рдиреНрди рдерд╛!



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ElasticSeach рдореЗрдВ рдПрдХ Hightligh API рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░



  elastic.search({ index: 'items', from: (page - 1) * paging.pageSize, size: paging.pageSize, body: { query: { filtered: { query: { 'query_string': { query: query }, }, filter: { term: { user: user.email } } }, }, highlight: { fields: { description: { }, title: { }, source: { } } } }
      
      





рдЗрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рд╣рд┐рдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП HTML рддреИрдпрд╛рд░ рд╣реИ, рдЬреЛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ:



рдЫрд╡рд┐



рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╕рдВрд╢реЛрдзрди



рдореВрд▓ рдЦреЛрдЬ рдХреЗ рдЕрд░реНрдЬрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рднреА рдирдП рдбреЗрдЯрд╛ рдЬреЛ MongoDB (рдореБрдЦреНрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ) рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, ElasticSearch рдореЗрдВ "рдмрд╣рддрд╛ рд╣реИ"ред



рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рддрдерд╛рдХрдерд┐рдд рдирджрд┐рдпреЛрдВред рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рддрд╣рдд, рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВред MongoDB рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред



MongoDB рдХреЗ рд▓рд┐рдП рдирджреА рдПрдХ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ oplog рдХреА рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдФрд░ ElasticSeach рдЖрджреЗрд╢реЛрдВ рдореЗрдВ oplog рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореИрдВ MongoHQ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд╣рд╛рдереЛрдВ рдХреА рдХреНрд░рдВрдЪ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕рдлрд▓ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рднрд░рд╛ рд╣реИ)ред



рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред рдЪреВрдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЗрдиреНрд╕рд░реНрдЯ рдФрд░ рдвреВрдВрдврдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛, рддрд╛рдХрд┐ MongoDB рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдореИрдВ ElasticSeach рдореЗрдВ рдмрд▓реНрдХ рдХрдорд╛рдВрдб рдХрд░реВрдБред



  async.waterfall([ readUser, executeConnector, findNew, saveToMongo, saveToEleastic, saveState ], function (err, results) { });
      
      





рдлрд╝рдВрдХреНрд╢рди, saveToElastic



  var commands = []; items.forEach(function (item) { commands.push({'index': {'_index': 'items', '_type': 'item', '_id': item._id.toString()}}); commands.push(item); }); elastic.bulk({body: commands}, callback);
      
      





рдореИрдВ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдирджреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рдиреНрдпрд╛рдпрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред



рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░



рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдпреЛрдЧ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдпрд╣ рд╕рдм рддреИрдирд╛рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдУрд╢рди (2 рд╕реАрдкреАрдпреВ, 2 рдЬреАрдмреА, 40 рдЬреАрдмреА рдПрд╕рдбреАрдбреА) рдкрд░ рдПрдХ рдирдИ рдЫреЛрдЯреА рдмреВрдВрдж рдмрдирд╛рдИ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд┐рдП - рдПрд▓реИрд╕реНрдЯреАрд╕рдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдиреЛрдбреНрд╕ рдФрд░ рдЧрд┐рдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдПрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░реЗрдВред



рдЬреИрд╕реЗ рд╣реА рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рд▓рд┐рдХреЗрд╕реНрдЯреЛрд░ рдПрдкреАрдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реБрдЖред



рдкрд░рд┐рдгрд╛рдо



рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ ElasticSearch рдХреЗ рд╕реНрд╡рд┐рдЪ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдБ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣рдирд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред



рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдиреЗ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдЙрдиреНрдирдд рдЦреЛрдЬ (рддрд┐рдерд┐, рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рдХрд╛рд░, рдЖрджрд┐) рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦреЛрд▓рд╛ред



рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдореЗрдВ рдПрдХ рдкреВрд░реНрдг noob рд╣реВрдБред рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рд╣рдореЗрдВ рдЬреЛ рдлреАрдбрдмреИрдХ рдорд┐рд▓рд╛ рдерд╛ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реБрдзрд╛рд░реЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред



MongoDB рдиреЗ рдЕрдВрддрддрдГ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рд╛рдВрд╕ рд▓реА рд╣реИ, рд▓реЙрдХ рдХрд┐рдП рдЧрдП% рдХреЛ 0.1% рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдКрдкрд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрддрд░рджрд╛рдпреА рдмрдирд╛рддрд╛ рд╣реИред



рдпрджрд┐ рдЖрдк рдЕрднреА рднреА MongoDB рдкреВрд░реНрдг рдкрд╛рда рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЛ ElasticSeach рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреА рд╣реИред



All Articles