{"id":85115,"date":"2025-03-28T11:59:19","date_gmt":"2025-03-28T04:59:19","guid":{"rendered":"https:\/\/itviecblog.uptech.vn\/?p=85115"},"modified":"2025-06-17T15:29:37","modified_gmt":"2025-06-17T08:29:37","slug":"elasticsearch-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/","title":{"rendered":"T\u1eeb A \u0111\u1ebfn Z v\u1ec1 Elasticsearch: \u201cV\u0169 kh\u00ed\u201d b\u00ed m\u1eadt cho c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Elasticsearch_la_gi\" >Elasticsearch l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Elasticsearch_hoat_dong_nhu_the_nao\" >Elasticsearch ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Vai_tro_va_ung_dung_cua_Elasticsearch_la_gi_trong_thoi_dai_du_lieu_lon\" >Vai tr\u00f2 v\u00e0 \u1ee9ng d\u1ee5ng c\u1ee7a Elasticsearch l\u00e0 g\u00ec trong th\u1eddi \u0111\u1ea1i d\u1eef li\u1ec7u l\u1edbn?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Uu_va_nhuoc_diem_cua_Elasticsearch_la_gi\" >\u01afu v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Elasticsearch l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Cai_dat_va_chay_Elasticsearch_nhu_the_nao\" >C\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y Elasticsearch nh\u01b0 th\u1ebf n\u00e0o?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Cau_hoi_thuong_gap_ve_Elasticsearch_la_gi\" >C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Elasticsearch l\u00e0 g\u00ec<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#Tong_ket_Elasticsearch_la_gi\" >T\u1ed5ng k\u1ebft Elasticsearch l\u00e0 g\u00ec<\/a><\/li><\/ul><\/nav><\/div>\n<p><em><strong>Trong k\u1ef7 nguy\u00ean s\u1ed1 h\u00f3a, vi\u1ec7c qu\u1ea3n l\u00fd v\u00e0 khai th\u00e1c hi\u1ec7u qu\u1ea3 kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 c\u1ee7a \u1ee9ng d\u1ee5ng lu\u00f4n l\u00e0 m\u1ed9t th\u00e1ch th\u1ee9c. Elasticsearch \u0111\u00e3 gi\u00fap c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn gi\u1ea3i quy\u1ebft b\u00e0i to\u00e1n kh\u00f3 kh\u0103n n\u00e0y v\u1edbi kh\u1ea3 n\u0103ng t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u theo th\u1eddi gian th\u1ef1c. B\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y cung c\u1ea5p cho b\u1ea1n c\u00e1i nh\u00ecn to\u00e0n di\u1ec7n v\u1ec1 Elasticsearch l\u00e0 g\u00ec, t\u1eeb nh\u1eefng kh\u00e1i ni\u1ec7m c\u01a1 b\u1ea3n \u0111\u1ebfn c\u00e1c \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf, gi\u00fap b\u1ea1n khai th\u00e1c t\u1ed1i \u0111a s\u1ee9c m\u1ea1nh c\u1ee7a c\u00f4ng c\u1ee5 n\u00e0y.<\/strong><\/em><\/p>\n<p><span style=\"font-weight: 400;\">\u0110\u1ecdc b\u00e0i vi\u1ebft \u0111\u1ec3 hi\u1ec3u th\u00eam v\u1ec1:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Elasticsearch l\u00e0 g\u00ec<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Elasticsearch ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Vai tr\u00f2 v\u00e0 \u1ee9ng d\u1ee5ng c\u1ee7a Elasticsearch<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u01afu v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Elasticsearch l\u00e0 g\u00ec?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y Elasticsearch<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Elasticsearch<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Elasticsearch_la_gi\"><\/span><b>Elasticsearch l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Elasticsearch l\u00e0 g\u00ec? Elasticsearch l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch ph\u00e2n t\u00e1n, m\u00e3 ngu\u1ed3n m\u1edf, \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean <\/span><a href=\"https:\/\/lucene.apache.org\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Apache Lucene<\/span><\/a><span style=\"font-weight: 400;\"> v\u00e0 ph\u00e1t tri\u1ec3n b\u1eb1ng Java. Ban \u0111\u1ea7u, n\u00f3 l\u00e0 phi\u00ean b\u1ea3n m\u1edf r\u1ed9ng c\u1ee7a framework t\u00ecm ki\u1ebfm m\u00e3 ngu\u1ed3n m\u1edf Lucene, sau \u0111\u00f3 \u0111\u01b0\u1ee3c b\u1ed5 sung kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng ngang (horizontally scale) c\u00e1c index Lucene.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Elasticsearch gi\u00fap l\u01b0u tr\u1eef, t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 v\u1edbi t\u1ed1c \u0111\u1ed9 ph\u1ea3n h\u1ed3i nhanh ch\u00f3ng. Tuy nhi\u00ean, hi\u1ec7u su\u1ea5t c\u1ee7a n\u00f3 c\u00f2n t\u00f9y thu\u1ed9c v\u00e0o k\u00edch th\u01b0\u1edbc d\u1eef li\u1ec7u, t\u1ed1c \u0111\u1ed9 ph\u1ea7n c\u1ee9ng v\u00e0 t\u1ed1i \u01b0u h\u00f3a truy v\u1ea5n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Thay v\u00ec t\u00ecm ki\u1ebfm tr\u1ef1c ti\u1ebfp tr\u00ean v\u0103n b\u1ea3n, Elasticsearch t\u00ecm ki\u1ebfm tr\u00ean m\u1ed9t index. Elasticsearch s\u1eed d\u1ee5ng c\u1ea5u tr\u00fac d\u1ef1a tr\u00ean document (JSON), linh ho\u1ea1t h\u01a1n so v\u1edbi b\u1ea3ng (table) v\u00e0 schema c\u1ed1 \u0111\u1ecbnh trong c\u01a1 s\u1edf d\u1eef li\u1ec7u quan h\u1ec7, \u0111\u1ed3ng th\u1eddi \u0111i k\u00e8m v\u1edbi c\u00e1c API REST m\u1edf r\u1ed9ng \u0111\u1ec3 l\u01b0u tr\u1eef v\u00e0 t\u00ecm ki\u1ebfm d\u1eef li\u1ec7u.\u00a0<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Elasticsearch_hoat_dong_nhu_the_nao\"><\/span><b>Elasticsearch ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">V\u1ec1 c\u01a1 b\u1ea3n, Elasticsearch ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t m\u00e1y ch\u1ee7 c\u00f3 th\u1ec3 x\u1eed l\u00fd c\u00e1c y\u00eau c\u1ea7u JSON v\u00e0 tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u JSON. N\u00f3 s\u1eafp x\u1ebfp d\u1eef li\u1ec7u th\u00e0nh c\u00e1c document (t\u00e0i li\u1ec7u). C\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c nh\u00f3m th\u00e0nh c\u00e1c index, t\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u01a1 s\u1edf d\u1eef li\u1ec7u, d\u1ef1a tr\u00ean c\u00e1c \u0111\u1eb7c \u0111i\u1ec3m c\u1ee7a ch\u00fang.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 h\u1ed7 tr\u1ee3 t\u00ecm ki\u1ebfm hi\u1ec7u qu\u1ea3, Elasticsearch s\u1eed d\u1ee5ng Inverted Index, m\u1ed9t c\u1ea5u tr\u00fac d\u1eef li\u1ec7u \u00e1nh x\u1ea1 c\u00e1c t\u1eeb kh\u00f3a \u0111\u1ebfn v\u1ecb tr\u00ed t\u00e0i li\u1ec7u c\u1ee7a ch\u00fang. Ngo\u00e0i ra, ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n c\u1ee7a Elasticsearch cho ph\u00e9p t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch nhanh ch\u00f3ng l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 v\u1edbi hi\u1ec7u su\u1ea5t g\u1ea7n nh\u01b0 theo th\u1eddi gian th\u1ef1c.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 c\u00e1ch Elasticsearch l\u00e0 g\u00ec v\u00e0 c\u00e1ch Elasticsearch ho\u1ea1t \u0111\u1ed9ng, ch\u00fang ta c\u00f9ng l\u00e0m r\u00f5 m\u1ed9t s\u1ed1 kh\u00e1i ni\u1ec7m c\u01a1 b\u1ea3n v\u1ec1 c\u00e1ch t\u1ed5 ch\u1ee9c d\u1eef li\u1ec7u v\u00e0 c\u00e1c th\u00e0nh ph\u1ea7n back-end c\u1ee7a Elasticsearch:<\/span><\/p>\n<h3><b> C\u00e1c kh\u00e1i ni\u1ec7m logic<\/b><\/h3>\n<h4><b>Document<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">L\u00e0 \u0111\u01a1n v\u1ecb th\u00f4ng tin c\u01a1 b\u1ea3n c\u00f3 th\u1ec3 l\u1eadp index, \u0111\u01b0\u1ee3c th\u1ec3 hi\u1ec7n d\u01b0\u1edbi d\u1ea1ng JSON. Trong Elasticsearch, m\u1ed9t document kh\u00f4ng ch\u1ec9 l\u00e0 v\u0103n b\u1ea3n m\u00e0 c\u00f3 th\u1ec3 l\u00e0 b\u1ea5t k\u1ef3 d\u1eef li\u1ec7u c\u00f3 c\u1ea5u tr\u00fac n\u00e0o \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a trong JSON nh\u01b0: s\u1ed1, chu\u1ed7i v\u00e0 ng\u00e0y. M\u1ed7i document c\u00f3 m\u1ed9t ID duy nh\u1ea5t v\u00e0 m\u1ed9t ki\u1ec3u d\u1eef li\u1ec7u nh\u1ea5t \u0111\u1ecbnh, m\u00f4 t\u1ea3 lo\u1ea1i th\u1ef1c th\u1ec3 c\u1ee7a t\u00e0i li\u1ec7u \u0111\u00f3.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: M\u1ed9t document \u0111\u1ea1i di\u1ec7n cho m\u1ed9t b\u00e0i vi\u1ebft b\u00e1ch khoa to\u00e0n th\u01b0 ho\u1eb7c c\u00e1c m\u1ee5c nh\u1eadt k\u00fd t\u1eeb m\u00e1y ch\u1ee7 web.<\/span><\/p>\n<h4><b>Index<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">L\u00e0 t\u1eadp h\u1ee3p c\u00e1c document c\u00f3 \u0111\u1eb7c \u0111i\u1ec3m t\u01b0\u01a1ng t\u1ef1 nhau, th\u1ef1c th\u1ec3 c\u1ea5p cao nh\u1ea5t m\u00e0 b\u1ea1n c\u00f3 th\u1ec3 truy v\u1ea5n trong Elasticsearch. B\u1ea5t k\u1ef3 t\u00e0i li\u1ec7u n\u00e0o trong index th\u01b0\u1eddng c\u00f3 li\u00ean quan v\u1ec1 m\u1eb7t logic.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5, trong m\u1ed9t trang web th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed, b\u1ea1n c\u00f3 th\u1ec3 c\u00f3 m\u1ed9t index cho Kh\u00e1ch h\u00e0ng, m\u1ed9t index cho S\u1ea3n ph\u1ea9m, m\u1ed9t index cho \u0110\u01a1n h\u00e0ng, v.v. Index \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh b\u1eb1ng t\u00ean s\u1eed d\u1ee5ng \u0111\u1ec3 tham chi\u1ebfu \u0111\u1ebfn index khi th\u1ef1c hi\u1ec7n c\u00e1c ho\u1ea1t \u0111\u1ed9ng l\u1eadp index, t\u00ecm ki\u1ebfm, c\u1eadp nh\u1eadt v\u00e0 x\u00f3a \u0111\u1ed1i v\u1edbi c\u00e1c t\u00e0i li\u1ec7u trong \u0111\u00f3.<\/span><\/p>\n<h4><b>Inverted Index<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Trong Elasticsearch, m\u1ed9t index th\u1ef1c ch\u1ea5t g\u1ecdi l\u00e0 Inverted index, \u0111\u00e2y l\u00e0 c\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a t\u1ea5t c\u1ea3 c\u00e1c c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u1ec1 c\u01a1 b\u1ea3n, Inverted Index l\u00e0 m\u1ed9t c\u1ea5u tr\u00fac d\u1eef li\u1ec7u \u0111\u1eb7c bi\u1ec7t, \u00e1nh x\u1ea1 t\u1eeb kh\u00f3a \u0111\u1ebfn t\u00e0i li\u1ec7u ho\u1eb7c v\u1ecb tr\u00ed c\u1ee7a ch\u00fang, t\u1ed1i \u01b0u cho t\u00ecm ki\u1ebfm to\u00e0n v\u0103n, kh\u00e1c v\u1edbi hashmap th\u00f4ng th\u01b0\u1eddng \u1edf c\u00e1ch t\u1ed5 ch\u1ee9c v\u00e0 truy xu\u1ea5t d\u1eef li\u1ec7u. Inverted Index kh\u00f4ng l\u01b0u tr\u1eef tr\u1ef1c ti\u1ebfp c\u00e1c string, m\u00e0 thay v\u00e0o \u0111\u00f3 chia m\u1ed7i t\u00e0i li\u1ec7u th\u00e0nh c\u00e1c thu\u1eadt ng\u1eef t\u00ecm ki\u1ebfm ri\u00eang l\u1ebb, sau \u0111\u00f3 \u0111\u01b0a t\u1eebng thu\u1eadt ng\u1eef t\u00ecm ki\u1ebfm \u0111\u1ebfn c\u00e1c t\u00e0i li\u1ec7u m\u00e0 c\u00e1c thu\u1eadt ng\u1eef \u0111\u00f3 xu\u1ea5t hi\u1ec7n.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng Inverted index, Elasticsearch nhanh ch\u00f3ng t\u00ecm th\u1ea5y k\u1ebft qu\u1ea3 ph\u00f9 h\u1ee3p nh\u1ea5t cho c\u00e1c t\u00ecm ki\u1ebfm full-text t\u1eeb ngay c\u1ea3 c\u00e1c t\u1eadp d\u1eef li\u1ec7u r\u1ea5t l\u1edbn.<\/span><\/p>\n<h3><b>C\u00e1c th\u00e0nh ph\u1ea7n Back-end<\/b><\/h3>\n<h4><b>Cluster<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">M\u1ed9t Elasticsearch cluster l\u00e0 m\u1ed9t nh\u00f3m g\u1ed3m m\u1ed9t ho\u1eb7c nhi\u1ec1u phi\u00ean b\u1ea3n node \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i v\u1edbi nhau. S\u1ee9c m\u1ea1nh c\u1ee7a m\u1ed9t Elasticsearch cluster n\u1eb1m \u1edf s\u1ef1 ph\u00e2n ph\u1ed1i c\u00e1c t\u00e1c v\u1ee5, t\u00ecm ki\u1ebfm v\u00e0 l\u1eadp index tr\u00ean t\u1ea5t c\u1ea3 c\u00e1c node trong cluster.<\/span><\/p>\n<h4><b>Node<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">M\u1ed9t node l\u00e0 m\u1ed9t th\u1ec3 hi\u1ec7n (instance) c\u1ee7a Elasticsearch, m\u1ed9t ph\u1ea7n c\u1ee7a cluster. M\u1ed9t node l\u01b0u tr\u1eef d\u1eef li\u1ec7u v\u00e0 tham gia v\u00e0o kh\u1ea3 n\u0103ng l\u1eadp index v\u00e0 t\u00ecm ki\u1ebfm c\u1ee7a cluster. M\u1ed9t Elasticsearch node c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh theo nhi\u1ec1u c\u00e1ch kh\u00e1c nhau:\u00a0<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Master Node: \u0110i\u1ec1u khi\u1ec3n Elasticsearch cluster v\u00e0 ch\u1ecbu tr\u00e1ch nhi\u1ec7m cho t\u1ea5t c\u1ea3 c\u00e1c ho\u1ea1t \u0111\u1ed9ng tr\u00ean to\u00e0n cluster, ch\u1eb3ng h\u1ea1n nh\u01b0 t\u1ea1o\/x\u00f3a index v\u00e0 th\u00eam\/x\u00f3a node.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Data Node: L\u01b0u tr\u1eef d\u1eef li\u1ec7u v\u00e0 th\u1ef1c hi\u1ec7n c\u00e1c ho\u1ea1t \u0111\u1ed9ng li\u00ean quan \u0111\u1ebfn d\u1eef li\u1ec7u nh\u01b0 t\u00ecm ki\u1ebfm v\u00e0 t\u1ed5ng h\u1ee3p.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Client Node: Chuy\u1ec3n ti\u1ebfp c\u00e1c y\u00eau c\u1ea7u c\u1ee7a cluster \u0111\u1ebfn Master node v\u00e0 c\u00e1c y\u00eau c\u1ea7u li\u00ean quan \u0111\u1ebfn d\u1eef li\u1ec7u \u0111\u1ebfn c\u00e1c Data node.<\/span><\/li>\n<\/ul>\n<h4><b>Shard<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Elasticsearch cung c\u1ea5p kh\u1ea3 n\u0103ng chia nh\u1ecf index th\u00e0nh nhi\u1ec1u ph\u1ea7n \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 shard. M\u1ed7i shard l\u00e0 m\u1ed9t index \u0111\u1ed9c l\u1eadp v\u1edbi \u0111\u1ea7y \u0111\u1ee7 ch\u1ee9c n\u0103ng, c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef tr\u00ean b\u1ea5t k\u1ef3 node n\u00e0o trong cluster. B\u1eb1ng c\u00e1ch ph\u00e2n ph\u1ed1i c\u00e1c t\u00e0i li\u1ec7u trong m\u1ed9t index tr\u00ean nhi\u1ec1u shard v\u00e0 ph\u00e2n ph\u1ed1i c\u00e1c shard \u0111\u00f3 tr\u00ean nhi\u1ec1u node, Elasticsearch \u0111\u1ea3m b\u1ea3o t\u00ednh d\u1ef1 ph\u00f2ng, v\u1eeba b\u1ea3o v\u1ec7 ch\u1ed1ng l\u1ea1i l\u1ed7i ph\u1ea7n c\u1ee9ng v\u1eeba t\u0103ng kh\u1ea3 n\u0103ng x\u1eed l\u00fd truy v\u1ea5n khi c\u00e1c node \u0111\u01b0\u1ee3c th\u00eam v\u00e0o cluster.<\/span><\/p>\n<h4><b>Replica<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Elasticsearch cho ph\u00e9p b\u1ea1n t\u1ea1o m\u1ed9t ho\u1eb7c nhi\u1ec1u b\u1ea3n sao c\u1ee7a c\u00e1c shard, \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 replica shard ho\u1eb7c \u0111\u01a1n gi\u1ea3n l\u00e0 replica. V\u1ec1 c\u01a1 b\u1ea3n, m\u1ed9t replica shard l\u00e0 m\u1ed9t b\u1ea3n sao c\u1ee7a m\u1ed9t primary shard. M\u1ed7i t\u00e0i li\u1ec7u trong m\u1ed9t index thu\u1ed9c v\u1ec1 m\u1ed9t primary shard. Replica b\u1ea3o v\u1ec7 ch\u1ed1ng l\u1ea1i l\u1ed7i ph\u1ea7n c\u1ee9ng v\u00e0 t\u0103ng kh\u1ea3 n\u0103ng ph\u1ee5c v\u1ee5 c\u00e1c y\u00eau c\u1ea7u \u0111\u1ecdc nh\u01b0 t\u00ecm ki\u1ebfm ho\u1eb7c truy xu\u1ea5t t\u00e0i li\u1ec7u.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Vai_tro_va_ung_dung_cua_Elasticsearch_la_gi_trong_thoi_dai_du_lieu_lon\"><\/span><b>Vai tr\u00f2 v\u00e0 \u1ee9ng d\u1ee5ng c\u1ee7a Elasticsearch l\u00e0 g\u00ec trong th\u1eddi \u0111\u1ea1i d\u1eef li\u1ec7u l\u1edbn?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><b>T\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch v\u0103n b\u1ea3n<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Elasticsearch \u1ee9ng d\u1ee5ng t\u1ed1t trong t\u00ecm ki\u1ebfm to\u00e0n v\u0103n, l\u00e0 l\u1ef1a ch\u1ecdn l\u00fd t\u01b0\u1edfng cho c\u00e1c \u1ee9ng d\u1ee5ng y\u00eau c\u1ea7u ch\u1ee9c n\u0103ng t\u00ecm ki\u1ebfm m\u1ea1nh m\u1ebd. D\u00f9 l\u00e0 t\u00ecm ki\u1ebfm qua c\u00e1c b\u00e0i \u0111\u0103ng tr\u00ean blog, danh m\u1ee5c s\u1ea3n ph\u1ea9m hay t\u1ec7p nh\u1eadt k\u00fd, Elasticsearch c\u00f3 th\u1ec3 nhanh ch\u00f3ng truy xu\u1ea5t c\u00e1c t\u00e0i li\u1ec7u c\u00f3 li\u00ean quan d\u1ef1a tr\u00ean truy v\u1ea5n c\u1ee7a ng\u01b0\u1eddi d\u00f9ng.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: V\u1edbi trang web c\u00f3 b\u1ed9 s\u01b0u t\u1eadp l\u1edbn c\u00e1c b\u00e0i vi\u1ebft, Elasticsearch gi\u00fap ng\u01b0\u1eddi d\u00f9ng t\u00ecm ki\u1ebfm b\u00e0i vi\u1ebft ch\u1ee9a c\u00e1c t\u1eeb kh\u00f3a c\u1ee5 th\u1ec3 v\u00e0 h\u1ec7 th\u1ed1ng s\u1ebd tr\u1ea3 v\u1ec1 c\u00e1c k\u1ebft qu\u1ea3 \u0111\u01b0\u1ee3c x\u1ebfp h\u1ea1ng theo m\u1ee9c \u0111\u1ed9 li\u00ean quan.<\/span><\/p>\n<h3><b>Ph\u00e2n t\u00edch d\u1eef li\u1ec7u log &amp; s\u1ef1 ki\u1ec7n\u00a0<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Trong l\u0129nh v\u1ef1c DevOps v\u00e0 gi\u00e1m s\u00e1t h\u1ec7 th\u1ed1ng, Elasticsearch \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng r\u1ed9ng r\u00e3i \u0111\u1ec3 ph\u00e2n t\u00edch d\u1eef li\u1ec7u nh\u1eadt k\u00fd v\u00e0 s\u1ef1 ki\u1ec7n. B\u1eb1ng c\u00e1ch l\u1eadp index log trong Elasticsearch, c\u00e1c t\u1ed5 ch\u1ee9c c\u00f3 th\u1ec3 ph\u00e2n t\u00edch th\u1eddi gian th\u1ef1c, ph\u00e1t hi\u1ec7n b\u1ea5t th\u01b0\u1eddng v\u00e0 kh\u1eafc ph\u1ee5c s\u1ef1 c\u1ed1 hi\u1ec7u qu\u1ea3.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: Trong m\u1ed9t c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng m\u00e1y ch\u1ee7\u00a0 t\u1ea1o ra c\u00e1c t\u1ec7p nh\u1eadt k\u00fd li\u00ean t\u1ee5c, b\u1eb1ng c\u00e1ch nh\u1eadp c\u00e1c nh\u1eadt k\u00fd n\u00e0y v\u00e0o Elasticsearch, qu\u1ea3n tr\u1ecb vi\u00ean c\u00f3 th\u1ec3 t\u00ecm ki\u1ebfm c\u00e1c th\u00f4ng b\u00e1o l\u1ed7i c\u1ee5 th\u1ec3, theo d\u00f5i hi\u1ec7u su\u1ea5t h\u1ec7 th\u1ed1ng v\u00e0 tr\u1ef1c quan h\u00f3a c\u00e1c xu h\u01b0\u1edbng theo th\u1eddi gian.<\/span><\/p>\n<h3><b>Business Intelligence v\u00e0 Analytics<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Elasticsearch c\u00f3 th\u1ec3 \u0111\u00f3ng vai tr\u00f2 l\u00e0 n\u1ec1n t\u1ea3ng cho c\u00e1c \u1ee9ng d\u1ee5ng Business Intelligence (BI) v\u00e0 Analytics, cho ph\u00e9p c\u00e1c t\u1ed5 ch\u1ee9c n\u1eafm th\u00f4ng tin chi ti\u1ebft c\u00f3 th\u1ec3 h\u00e0nh \u0111\u1ed9ng t\u1eeb d\u1eef li\u1ec7u c\u1ee7a h\u1ecd. B\u1eb1ng c\u00e1ch l\u1eadp index v\u00e0 t\u1ed5ng h\u1ee3p d\u1eef li\u1ec7u trong Elasticsearch, c\u00e1c nh\u00e0 ph\u00e2n t\u00edch c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n truy v\u1ea5n ph\u1ee9c t\u1ea1p, t\u1ea1o b\u00e1o c\u00e1o v\u00e0 t\u1ea1o h\u00ecnh \u1ea3nh tr\u1ef1c quan \u0111\u1ec3 h\u1ed7 tr\u1ee3 quy tr\u00ecnh ra quy\u1ebft \u0111\u1ecbnh.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: M\u1ed9t c\u00f4ng ty b\u00e1n l\u1ebb s\u1eed d\u1ee5ng Elasticsearch \u0111\u1ec3 ph\u00e2n t\u00edch m\u00f4 h\u00ecnh mua h\u00e0ng c\u1ee7a kh\u00e1ch h\u00e0ng, x\u00e1c \u0111\u1ecbnh c\u00e1c s\u1ea3n ph\u1ea9m ph\u1ed5 bi\u1ebfn v\u00e0 d\u1ef1 \u0111o\u00e1n xu h\u01b0\u1edbng b\u00e1n h\u00e0ng trong t\u01b0\u01a1ng lai d\u1ef1a tr\u00ean d\u1eef li\u1ec7u l\u1ecbch s\u1eed.<\/span><\/p>\n<h3><b>T\u00ecm ki\u1ebfm d\u1eef li\u1ec7u \u0111\u1ecba l\u00fd<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Elasticsearch c\u0169ng h\u1ed7 tr\u1ee3 kh\u1ea3 n\u0103ng t\u00ecm ki\u1ebfm kh\u00f4ng gian \u0111\u1ec3 ph\u00f9 h\u1ee3p v\u1edbi \u1ee9ng d\u1ee5ng x\u1eed l\u00fd d\u1eef li\u1ec7u \u0111\u1ecba l\u00fd. Elasticsearch c\u00f3 th\u1ec3 l\u1eadp index v\u00e0 t\u00ecm ki\u1ebfm d\u1eef li\u1ec7u kh\u00f4ng gian \u0111\u1ecba l\u00fd nh\u01b0 v\u1ecb tr\u00ed, t\u1ecda \u0111\u1ed9 v\u00e0 \u0111a gi\u00e1c, cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng th\u1ef1c hi\u1ec7n c\u00e1c truy v\u1ea5n kh\u00f4ng gian v\u00e0 t\u00ecm ki\u1ebfm g\u1ea7n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: \u1ee8ng d\u1ee5ng \u0111\u1eb7t v\u00e9 du l\u1ecbch s\u1eed d\u1ee5ng Elasticsearch \u0111\u1ec3 t\u00ecm ki\u1ebfm kh\u00e1ch s\u1ea1n trong kho\u1ea3ng c\u00e1ch nh\u1ea5t \u0111\u1ecbnh t\u00ednh t\u1eeb v\u1ecb tr\u00ed c\u1ee7a ng\u01b0\u1eddi d\u00f9ng, l\u1ecdc k\u1ebft qu\u1ea3 d\u1ef1a tr\u00ean ti\u1ec7n nghi v\u00e0 cung c\u1ea5p b\u1ea3n \u0111\u1ed3 t\u01b0\u01a1ng t\u00e1c \u0111\u1ec3 kh\u00e1m ph\u00e1 tr\u1ef1c quan.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Uu_va_nhuoc_diem_cua_Elasticsearch_la_gi\"><\/span><b>\u01afu v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Elasticsearch l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><b>\u01afu \u0111i\u1ec3m c\u1ee7a Elasticsearch<\/b><\/h3>\n<p><b>Ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n v\u00e0 c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng:<\/b><span style=\"font-weight: 400;\"> M\u1ed9t trong nh\u1eefng \u01b0u \u0111i\u1ec3m ch\u00ednh c\u1ee7a Elasticsearch l\u00e0 t\u00ednh ch\u1ea5t ph\u00e2n t\u00e1n, cho ph\u00e9p m\u1edf r\u1ed9ng theo chi\u1ec1u ngang tr\u00ean nhi\u1ec1u node. Ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n n\u00e0y gi\u00fap Elasticsearch x\u1eed l\u00fd c\u00e1c t\u1eadp d\u1eef li\u1ec7u l\u1edbn v\u00e0 kh\u1ed1i l\u01b0\u1ee3ng truy v\u1ea5n cao m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. Khi d\u1eef li\u1ec7u c\u1ee7a ch\u00fang ta t\u0103ng l\u00ean, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam nhi\u1ec1u node v\u00e0o cluster \u0111\u1ec3 \u0111\u00e1p \u1ee9ng kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c gia t\u0103ng v\u00e0 \u0111\u1ea3m b\u1ea3o kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: <\/span><span style=\"font-weight: 400;\">B\u1ea1n \u0111ang ch\u1ea1y m\u1ed9t \u1ee9ng d\u1ee5ng web thu th\u1eadp nh\u1eadt k\u00fd ho\u1ea1t \u0111\u1ed9ng c\u1ee7a ng\u01b0\u1eddi d\u00f9ng. Khi s\u1ed1 l\u01b0\u1ee3ng ng\u01b0\u1eddi d\u00f9ng t\u0103ng l\u00ean, kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u nh\u1eadt k\u00fd c\u0169ng t\u0103ng theo. V\u1edbi Elasticsearch, ch\u00fang ta c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng m\u1edf r\u1ed9ng cluster b\u1eb1ng c\u00e1ch th\u00eam nhi\u1ec1u node h\u01a1n \u0111\u1ec3 x\u1eed l\u00fd vi\u1ec7c nh\u1eadp d\u1eef li\u1ec7u v\u00e0 c\u00e1c truy v\u1ea5n t\u00ecm ki\u1ebfm gia t\u0103ng.<\/span><\/p>\n<p><b>T\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch th\u1eddi gian th\u1ef1c: <\/b><span style=\"font-weight: 400;\">Elasticsearch cung c\u1ea5p kh\u1ea3 n\u0103ng t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch theo th\u1eddi gian th\u1ef1c, cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng th\u1ef1c hi\u1ec7n t\u00ecm ki\u1ebfm v\u00e0 t\u1ed5ng h\u1ee3p g\u1ea7n nh\u01b0 ngay l\u1eadp t\u1ee9c tr\u00ean c\u00e1c t\u1eadp d\u1eef li\u1ec7u l\u1edbn. B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng Inverted Index v\u00e0 kh\u1ea3 n\u0103ng t\u00ecm ki\u1ebfm ph\u00e2n t\u00e1n, Elasticsearch c\u00f3 th\u1ec3 cung c\u1ea5p k\u1ebft qu\u1ea3 nhanh ch\u00f3ng v\u00e0 c\u00f3 li\u00ean quan ngay c\u1ea3 tr\u00ean terabyte d\u1eef li\u1ec7u.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5:<\/span><span style=\"font-weight: 400;\"> M\u1ed9t n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed c\u1ea7n ph\u00e2n t\u00edch h\u00e0nh vi c\u1ee7a kh\u00e1ch h\u00e0ng theo th\u1eddi gian th\u1ef1c \u0111\u1ec3 c\u00e1 nh\u00e2n h\u00f3a c\u00e1c \u0111\u1ec1 xu\u1ea5t s\u1ea3n ph\u1ea9m. V\u1edbi Elasticsearch, n\u1ec1n t\u1ea3ng c\u00f3 th\u1ec3 nhanh ch\u00f3ng truy v\u1ea5n nh\u1eadt k\u00fd ho\u1ea1t \u0111\u1ed9ng c\u1ee7a ng\u01b0\u1eddi d\u00f9ng \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh c\u00e1c pattern v\u00e0 xu h\u01b0\u1edbng, d\u1eabn \u0111\u1ebfn c\u00e1c \u0111\u1ec1 xu\u1ea5t t\u1ed1t h\u01a1n v\u00e0 c\u1ea3i thi\u1ec7n s\u1ef1 t\u01b0\u01a1ng t\u00e1c c\u1ee7a ng\u01b0\u1eddi d\u00f9ng.<\/span><\/p>\n<p><b>T\u00ecm ki\u1ebfm to\u00e0n v\u0103n v\u00e0 truy v\u1ea5n linh ho\u1ea1t: <\/b><span style=\"font-weight: 400;\">Kh\u1ea3 n\u0103ng t\u00ecm ki\u1ebfm to\u00e0n v\u0103n m\u1ea1nh m\u1ebd v\u00e0 cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng th\u1ef1c hi\u1ec7n c\u00e1c truy v\u1ea5n ph\u1ee9c t\u1ea1p bao g\u1ed3m t\u00ecm ki\u1ebfm t\u1eeb kh\u00f3a, t\u00ecm ki\u1ebfm c\u1ee5m t\u1eeb, t\u00ecm ki\u1ebfm k\u00fd t\u1ef1 \u0111\u1ea1i di\u1ec7n\u2026 Ngo\u00e0i ra, Elasticsearch c\u0169ng cung c\u1ea5p truy v\u1ea5n DSL v\u1edbi c\u00fa ph\u00e1p linh ho\u1ea1t v\u00e0 bi\u1ec3u c\u1ea3m \u0111\u1ec3 x\u00e2y d\u1ef1ng truy v\u1ea5n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: H\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd n\u1ed9i dung c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Elasticsearch \u0111\u1ec3 t\u0103ng c\u01b0\u1eddng ch\u1ee9c n\u0103ng t\u00ecm ki\u1ebfm, cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng t\u00ecm b\u00e0i vi\u1ebft d\u1ef1a tr\u00ean t\u1eeb kh\u00f3a, tag ho\u1eb7c lo\u1ea1i n\u1ed9i dung. Ng\u01b0\u1eddi d\u00f9ng c\u0169ng c\u00f3 th\u1ec3 \u00e1p d\u1ee5ng b\u1ed9 l\u1ecdc v\u00e0 t\u1ed5ng h\u1ee3p \u0111\u1ec3 t\u1ed1i \u01b0u k\u1ebft qu\u1ea3 t\u00ecm ki\u1ebfm h\u01a1n n\u1eefa.<\/span><\/p>\n<p><b>H\u1ec7 sinh th\u00e1i phong ph\u00fa v\u00e0 s\u1ef1 h\u1ed7 tr\u1ee3 c\u1ee7a c\u1ed9ng \u0111\u1ed3ng: <\/b><span style=\"font-weight: 400;\">Elasticsearch c\u00f3 h\u1ec7 sinh th\u00e1i s\u00f4i \u0111\u1ed9ng v\u00e0 m\u1ed9t c\u1ed9ng \u0111\u1ed3ng ng\u01b0\u1eddi d\u00f9ng c\u0169ng nh\u01b0 c\u1ed9ng t\u00e1c vi\u00ean \u0111\u00f4ng \u0111\u1ea3o, cung c\u1ea5p quy\u1ec1n truy c\u1eadp v\u00e0o v\u00f4 s\u1ed1 t\u00e0i nguy\u00ean, plugin v\u00e0 t\u00edch h\u1ee3p.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ch\u1eb3ng h\u1ea1n b\u1ea1n c\u1ea7n t\u00edch h\u1ee3p Elasticsearch v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 gi\u00e1m s\u00e1t ho\u1eb7c n\u1ec1n t\u1ea3ng tr\u1ef1c quan h\u00f3a d\u1eef li\u1ec7u hi\u1ec7n c\u00f3. B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c plugin nh\u01b0 Kibana \u0111\u1ec3 tr\u1ef1c quan h\u00f3a d\u1eef li\u1ec7u, Beats \u0111\u1ec3 v\u1eadn chuy\u1ec3n d\u1eef li\u1ec7u v\u00e0 Logstash \u0111\u1ec3 x\u1eed l\u00fd d\u1eef li\u1ec7u \u0111\u1ec3 x\u00e2y d\u1ef1ng m\u1ed9t pipeline ph\u00e2n t\u00edch d\u1eef li\u1ec7u to\u00e0n di\u1ec7n.<\/span><\/p>\n<h3><b>Nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a Elasticsearch<\/b><\/h3>\n<p><b>Thi\u1ebft l\u1eadp v\u00e0 b\u1ea3o tr\u00ec ph\u1ee9c t\u1ea1p:<\/b><span style=\"font-weight: 400;\"> Vi\u1ec7c thi\u1ebft l\u1eadp v\u00e0 duy tr\u00ec cluster s\u1ea3n xu\u1ea5t ph\u1ee9c t\u1ea1p v\u00e0 t\u1ed1n nhi\u1ec1u t\u00e0i nguy\u00ean. C\u00e1c tham s\u1ed1 c\u1ea5u h\u00ecnh, k\u00edch th\u01b0\u1edbc cluster v\u00e0 \u0111i\u1ec1u ch\u1ec9nh hi\u1ec7u su\u1ea5t c\u1ea7n \u0111\u01b0\u1ee3c c\u00e2n nh\u1eafc c\u1ea9n th\u1eadn \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o hi\u1ec7u su\u1ea5t v\u00e0 \u0111\u1ed9 tin c\u1eady t\u1ed1i \u01b0u. Ngo\u00e0i ra, vi\u1ec7c qu\u1ea3n l\u00fd sao l\u01b0u d\u1eef li\u1ec7u, c\u1ea5u h\u00ecnh b\u1ea3o m\u1eadt v\u00e0 n\u00e2ng c\u1ea5p ph\u1ea7n m\u1ec1m l\u00e0m t\u0103ng chi ph\u00ed ho\u1ea1t \u0111\u1ed9ng.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: Thi\u1ebft l\u1eadp multi-node Elasticsearch cluster li\u00ean quan \u0111\u1ebfn vi\u1ec7c c\u1ea5u h\u00ecnh c\u00e0i \u0111\u1eb7t m\u1ea1ng, tham s\u1ed1 JVM, k\u00edch th\u01b0\u1edbc heap v\u00e0 ph\u00e2n b\u1ed5 shard. Qu\u1ea3n tr\u1ecb vi\u00ean c\u0169ng ph\u1ea3i theo d\u00f5i t\u00ecnh tr\u1ea1ng cluster, x\u1eed l\u00fd l\u1ed7i node v\u00e0 th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 b\u1ea3o tr\u00ec th\u01b0\u1eddng xuy\u00ean \u0111\u1ec3 cluster ch\u1ea1y tr\u01a1n tru.<\/span><\/p>\n<p><b>Ti\u00eau t\u1ed1n t\u00e0i nguy\u00ean:<\/b><span style=\"font-weight: 400;\"> \u0110\u1ec3 s\u1eed d\u1ee5ng Elasticsearch hi\u1ec7u qu\u1ea3 c\u1ea7n \u0111\u1ee7 t\u00e0i nguy\u00ean CPU, b\u1ed9 nh\u1edb v\u00e0 kh\u1ea3 n\u0103ng l\u01b0u tr\u1eef. Khi k\u00edch th\u01b0\u1edbc t\u1eadp d\u1eef li\u1ec7u t\u0103ng l\u00ean, y\u00eau c\u1ea7u v\u1ec1 ph\u1ea7n c\u1ee9ng \u0111\u1ec3 ch\u1ea1y Elasticsearch c\u0169ng t\u0103ng theo. Ph\u00e2n b\u1ed5 t\u00e0i nguy\u00ean kh\u00f4ng t\u1ed1t s\u1ebd d\u1eabn \u0111\u1ebfn suy gi\u1ea3m hi\u1ec7u su\u1ea5t, h\u1ebft th\u1eddi gian truy v\u1ea5n v\u00e0 cluster kh\u00f4ng \u1ed5n \u0111\u1ecbnh.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: Vi\u1ec7c tri\u1ec3n khai Elasticsearch quy m\u00f4 nh\u1ecf c\u00f3 th\u1ec3 ch\u1ea1y tr\u01a1n tru tr\u00ean m\u1ed9t cluster duy nh\u1ea5t v\u1edbi t\u00e0i nguy\u00ean h\u1ea1n ch\u1ebf. Tuy nhi\u00ean, khi t\u1eadp d\u1eef li\u1ec7u t\u0103ng l\u00ean ho\u1eb7c kh\u1ed1i l\u01b0\u1ee3ng truy v\u1ea5n t\u0103ng l\u00ean, b\u1ea1n c\u1ea7n m\u1edf r\u1ed9ng l\u00ean c\u00e1c phi\u00ean b\u1ea3n l\u1edbn h\u01a1n ho\u1eb7c th\u00eam nhi\u1ec1u node h\u01a1n v\u00e0o cluster \u0111\u1ec3 duy tr\u00ec hi\u1ec7u su\u1ea5t.<\/span><\/p>\n<p><b>Kh\u00f4ng \u0111\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n v\u00e0 \u0111\u1ed9 b\u1ec1n c\u1ee7a d\u1eef li\u1ec7u: <\/b><span style=\"font-weight: 400;\">Elasticsearch \u01b0u ti\u00ean hi\u1ec7u su\u1ea5t t\u00ecm ki\u1ebfm v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng h\u01a1n l\u00e0 t\u00ednh nh\u1ea5t qu\u00e1n v\u00e0 \u0111\u1ed9 b\u1ec1n c\u1ee7a d\u1eef li\u1ec7u. M\u1eb7c d\u00f9 c\u01a1 ch\u1ebf sao ch\u00e9p d\u1eef li\u1ec7u v\u00e0 t\u00ednh kh\u1ea3 d\u1ee5ng cao, nh\u01b0ng kh\u00f4ng \u0111\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n tr\u00ean t\u1ea5t c\u1ea3 c\u00e1c node trong cluster.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5: Trong m\u1ed9t Elasticsearch cluster, c\u00e1c b\u1ea3n c\u1eadp nh\u1eadt \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n cho c\u00e1c t\u00e0i li\u1ec7u c\u00f3 th\u1ec3 kh\u00f4ng \u0111\u01b0\u1ee3c ph\u1ea3n \u00e1nh ngay l\u1eadp t\u1ee9c tr\u00ean t\u1ea5t c\u1ea3 c\u00e1c node. Khi \u0111\u00f3 ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 nh\u1eadn \u0111\u01b0\u1ee3c k\u1ebft qu\u1ea3 t\u00ecm ki\u1ebfm kh\u00f4ng nh\u1ea5t qu\u00e1n trong m\u1ed9t kho\u1ea3ng th\u1eddi gian ng\u1eafn.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Elasticsearch m\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng m\u00f4 h\u00ecnh &#8216;eventual consistency&#8217; khi c\u00f3 replica, nh\u01b0ng ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 \u0111i\u1ec1u ch\u1ec9nh \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n t\u1ee9c th\u1eddi n\u1ebfu c\u1ea7n.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cai_dat_va_chay_Elasticsearch_nhu_the_nao\"><\/span><b>C\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y Elasticsearch nh\u01b0 th\u1ebf n\u00e0o?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><b>B\u1eaft \u0111\u1ea7u<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">C\u00e1ch \u0111\u01a1n gi\u1ea3n nh\u1ea5t \u0111\u1ec3 thi\u1ebft l\u1eadp Elasticsearch l\u00e0 t\u1ea1o m\u1ed9t tri\u1ec3n khai \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u1edbi <\/span><a href=\"https:\/\/www.elastic.co\/cloud\/elasticsearch-service\/signup\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Elasticsearch Service tr\u00ean Elastic Cloud<\/span><\/a><span style=\"font-weight: 400;\">. N\u1ebfu b\u1ea1n mu\u1ed1n t\u1ef1 c\u00e0i \u0111\u1eb7t v\u00e0 qu\u1ea3n l\u00fd Elasticsearch, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea3i xu\u1ed1ng phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t t\u1eeb\u200b\u200b <\/span><a href=\"http:\/\/elastic.co\/downloads\/elasticsearch\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">elastic.co\/downloads\/elasticsearch<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>Ch\u1ea1y Elasticsearch c\u1ee5c b\u1ed9<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Nhanh ch\u00f3ng thi\u1ebft l\u1eadp Elasticsearch v\u00e0 Kibana trong Docker \u0111\u1ec3 ph\u00e1t tri\u1ec3n ho\u1eb7c th\u1eed nghi\u1ec7m c\u1ee5c b\u1ed9 b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng <\/span><a href=\"https:\/\/github.com\/elastic\/start-local?tab=readme-ov-file#-try-elasticsearch-and-kibana-locally\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">start-local <\/span><span style=\"font-weight: 400;\">script<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">\u0110i\u1ec1u ki\u1ec7n: N\u1ebfu b\u1ea1n ch\u01b0a c\u00e0i Docker, h\u00e3y t\u1ea3i xu\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t <\/span><a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Docker Desktop<\/span><\/a><span style=\"font-weight: 400;\"> cho h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u1ee7a b\u1ea1n. N\u1ebfu b\u1ea1n \u0111ang s\u1eed d\u1ee5ng Microsoft Windows, h\u00e3y c\u00e0i \u0111\u1eb7t <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Windows Subsystem for Linux (WSL)<\/span><\/a><span style=\"font-weight: 400;\"> .<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Gi\u1ea5y ph\u00e9p d\u00f9ng th\u1eed: Thi\u1ebft l\u1eadp n\u00e0y \u0111i k\u00e8m v\u1edbi gi\u1ea5y ph\u00e9p d\u00f9ng th\u1eed m\u1ed9t th\u00e1ng bao g\u1ed3m t\u1ea5t c\u1ea3 c\u00e1c t\u00ednh n\u0103ng c\u1ee7a Elastic. Sau th\u1eddi gian d\u00f9ng th\u1eed, gi\u1ea5y ph\u00e9p s\u1ebd tr\u1edf l\u1ea1i <\/span><i><span style=\"font-weight: 400;\">Free and open &#8211; Basic<\/span><\/i><span style=\"font-weight: 400;\">. Tham kh\u1ea3o m\u1ee5c <\/span><a href=\"https:\/\/www.elastic.co\/subscriptions\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\u0111\u0103ng k\u00fd Elastic<\/span><\/a><span style=\"font-weight: 400;\"> \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin.<\/span><\/li>\n<\/ul>\n<h3><b>Ch\u1ea1y <\/b><b>start-local<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 thi\u1ebft l\u1eadp Elasticsearch v\u00e0 Kibana c\u1ee5c b\u1ed9, h\u00e3y ch\u1ea1y <\/span><span style=\"font-weight: 400;\">start-local<\/span><span style=\"font-weight: 400;\"> script:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl -fsSL https:\/\/elastic.co\/start-local | sh<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Script n\u00e0y t\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c <\/span><span style=\"font-weight: 400;\">elastic-start-local<\/span><span style=\"font-weight: 400;\"> ch\u1ee9a c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh v\u00e0 kh\u1edfi \u0111\u1ed9ng c\u1ea3 Elasticsearch v\u00e0 Kibana b\u1eb1ng Docker.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sau khi ch\u1ea1y, b\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp d\u1ecbch v\u1ee5 Elastic t\u1ea1i c\u00e1c \u0111i\u1ec3m cu\u1ed1i sau:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Elasticsearch : <\/span><span style=\"font-weight: 400;\">http:\/\/localhost:9200<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Kibana : <\/span><span style=\"font-weight: 400;\">http:\/\/localhost:5601<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Script n\u00e0y t\u1ea1o ra m\u1ed9t m\u1eadt kh\u1ea9u ng\u1eabu nhi\u00ean cho <\/span><span style=\"font-weight: 400;\">elastic<\/span><span style=\"font-weight: 400;\"> user, \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb \u1edf cu\u1ed1i qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t v\u00e0 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong t\u1ec7p <\/span><span style=\"font-weight: 400;\">.env<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>Truy c\u1eadp API<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Kh\u00f3a API cho Elasticsearch \u0111\u01b0\u1ee3c t\u1ea1o v\u00e0 l\u01b0u tr\u1eef trong t\u1ec7p <\/span><span style=\"font-weight: 400;\">.env<\/span><span style=\"font-weight: 400;\"> d\u01b0\u1edbi d\u1ea1ng <\/span><span style=\"font-weight: 400;\">ES_LOCAL_API_KEY<\/span><span style=\"font-weight: 400;\">. S\u1eed d\u1ee5ng kh\u00f3a n\u00e0y \u0111\u1ec3 k\u1ebft n\u1ed1i v\u1edbi Elasticsearch b\u1eb1ng n<\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/client\/index.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">g\u00f4n ng\u1eef l\u1eadp tr\u00ecnh client<\/span><\/a><span style=\"font-weight: 400;\"> ho\u1eb7c REST API.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">T\u1eeb th\u01b0 m\u1ee5c <\/span><span style=\"font-weight: 400;\">elastic-start-local<\/span><span style=\"font-weight: 400;\">, h\u00e3y ki\u1ec3m tra k\u1ebft n\u1ed1i t\u1edbi Elasticsearch b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng <\/span><span style=\"font-weight: 400;\">curl<\/span><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">source .env<\/span>\n\n<span style=\"font-weight: 400;\">curl $ES_LOCAL_URL -H \"Authorization: ApiKey ${ES_LOCAL_API_KEY}\"<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">S\u1eed d\u1ee5ng kh\u00f3a n\u00e0y \u0111\u1ec3 k\u1ebft n\u1ed1i v\u1edbi Elasticsearch b\u1eb1ng th\u01b0 vi\u1ec7n client c\u1ee7a ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh ho\u1eb7c REST API.<\/span><\/p>\n<h3><b>G\u1eedi y\u00eau c\u1ea7u \u0111\u1ebfn Elasticsearch<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">B\u1ea1n g\u1eedi d\u1eef li\u1ec7u v\u00e0 c\u00e1c y\u00eau c\u1ea7u kh\u00e1c \u0111\u1ebfn Elasticsearch th\u00f4ng qua REST API. B\u1ea1n c\u00f3 th\u1ec3 t\u01b0\u01a1ng t\u00e1c v\u1edbi Elasticsearch b\u1eb1ng b\u1ea5t k\u1ef3 m\u00e1y kh\u00e1ch n\u00e0o g\u1eedi y\u00eau c\u1ea7u HTTP, ch\u1eb3ng h\u1ea1n nh\u01b0 th\u01b0 vi\u1ec7n client c\u1ee7a Elasticsearch v\u00e0 curl.<\/span><\/p>\n<h3><b>S\u1eed d\u1ee5ng curl<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sau \u0111\u00e2y l\u00e0 v\u00ed d\u1ee5 v\u1ec1 l\u1ec7nh curl \u0111\u1ec3 t\u1ea1o ch\u1ec9 m\u1ee5c Elasticsearch m\u1edbi, s\u1eed d\u1ee5ng x\u00e1c th\u1ef1c c\u01a1 b\u1ea3n:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">curl -u elastic:$ELASTIC_PASSWORD \\<\/span>\n<span style=\"font-weight: 400;\"> \u00a0-X PUT \\<\/span>\n<span style=\"font-weight: 400;\"> \u00a0http:\/\/localhost:9200\/my-new-index \\<\/span>\n<span style=\"font-weight: 400;\">\u00a0\u00a0-H 'Content-Type: application\/json'<\/span><\/pre>\n<h3><b>S\u1eed d\u1ee5ng ng\u00f4n ng\u1eef client<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 k\u1ebft n\u1ed1i v\u1edbi dev Elasticsearch cluster c\u1ee5c b\u1ed9 b\u1eb1ng th\u01b0 vi\u1ec7n client, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng x\u00e1c th\u1ef1c c\u01a1 b\u1ea3n v\u1edbi elastic user v\u00e0 m\u1eadt kh\u1ea9u b\u1ea1n \u0111\u1eb7t trong bi\u1ebfn m\u00f4i tr\u01b0\u1eddng. B\u1ea1n s\u1eed d\u1ee5ng th\u00f4ng tin k\u1ebft n\u1ed1i sau:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Elasticsearch endpoint: <\/span><span style=\"font-weight: 400;\">http:\/\/localhost:9200<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Username: <\/span><span style=\"font-weight: 400;\">elastic<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Password: <\/span><span style=\"font-weight: 400;\">$ELASTIC_PASSWORD<\/span><span style=\"font-weight: 400;\"> (Gi\u00e1 tr\u1ecb b\u1ea1n \u0111\u1eb7t trong bi\u1ebfn m\u00f4i tr\u01b0\u1eddng)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">V\u00ed d\u1ee5, \u0111\u1ec3 k\u1ebft n\u1ed1i v\u1edbi Python elasticsearch client:<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">import os<\/span>\n<span style=\"font-weight: 400;\">from elasticsearch import Elasticsearch\n<\/span>\n<span style=\"font-weight: 400;\">username = 'elastic'<\/span>\n<span style=\"font-weight: 400;\">password = os.getenv('ELASTIC_PASSWORD') # Value you set in the environment variable<\/span>\n\n<span style=\"font-weight: 400;\">client = Elasticsearch(<\/span>\n<span style=\"font-weight: 400;\">\"http:\/\/localhost:9200\",<\/span>\n<span style=\"font-weight: 400;\">basic_auth=(username, password)<\/span>\n<span style=\"font-weight: 400;\">)<\/span>\n\n<span style=\"font-weight: 400;\">print(client.info())<\/span><\/pre>\n<h3><b>S\u1eed d\u1ee5ng B\u1ea3ng \u0111i\u1ec1u khi\u1ec3n Dev Tools<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">B\u1ea3ng \u0111i\u1ec1u khi\u1ec3n d\u00e0nh cho Developer c\u1ee7a Kibana gi\u00fap th\u1eed nghi\u1ec7m v\u00e0 ki\u1ec3m tra c\u00e1c y\u00eau c\u1ea7u d\u1ec5 d\u00e0ng. \u0110\u1ec3 truy c\u1eadp b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n, h\u00e3y m\u1edf Kibana, sau \u0111\u00f3 v\u00e0o <\/span><b>Management &gt; Dev Tools.<\/b><\/p>\n<h3><b>Th\u00eam d\u1eef li\u1ec7u<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">L\u1eadp index data v\u00e0o Elasticsearch b\u1eb1ng c\u00e1ch g\u1eedi c\u00e1c document th\u00f4ng qua REST API. Cho d\u00f9 v\u0103n b\u1ea3n c\u00f3 c\u1ea5u tr\u00fac hay kh\u00f4ng c\u00f3 c\u1ea5u tr\u00fac, d\u1eef li\u1ec7u s\u1ed1 ho\u1eb7c d\u1eef li\u1ec7u kh\u00f4ng gian \u0111\u1ecba l\u00fd, Elasticsearch \u0111\u1ec1u l\u01b0u tr\u1eef v\u00e0 l\u1eadp index hi\u1ec7u qu\u1ea3 theo c\u00e1ch h\u1ed7 tr\u1ee3 t\u00ecm ki\u1ebfm nhanh. \u0110\u1ed1i v\u1edbi d\u1eef li\u1ec7u c\u00f3 d\u1ea5u th\u1eddi gian nh\u01b0 nh\u1eadt k\u00fd v\u00e0 s\u1ed1 li\u1ec7u, b\u1ea1n th\u00eam t\u00e0i li\u1ec7u v\u00e0o lu\u1ed3ng d\u1eef li\u1ec7u bao g\u1ed3m nhi\u1ec1u index sao l\u01b0u \u0111\u01b0\u1ee3c t\u1ea1o t\u1ef1 \u0111\u1ed9ng.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 th\u00eam m\u1ed9t t\u00e0i li\u1ec7u duy nh\u1ea5t v\u00e0o index, h\u00e3y g\u1eedi y\u00eau c\u1ea7u \u0111\u0103ng HTTP nh\u1eafm m\u1ee5c ti\u00eau v\u00e0o index \u0111\u00f3.<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">POST \/customer\/_doc\/1<\/span>\n<span style=\"font-weight: 400;\">{<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\"firstname\": \"Jennifer\",<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\"lastname\": \"Walters\"<\/span>\n<span style=\"font-weight: 400;\">}<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">Y\u00eau c\u1ea7u n\u00e0y s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea1o <\/span><span style=\"font-weight: 400;\">customer<\/span><span style=\"font-weight: 400;\"> index n\u1ebfu index \u0111\u00f3 ch\u01b0a t\u1ed3n t\u1ea1i, th\u00eam m\u1ed9t t\u00e0i li\u1ec7u m\u1edbi c\u00f3 ID l\u00e0 1, \u0111\u1ed3ng th\u1eddi l\u01b0u tr\u1eef v\u00e0 l\u1eadp index cho c\u00e1c tr\u01b0\u1eddng <\/span><span style=\"font-weight: 400;\">firstname<\/span><span style=\"font-weight: 400;\"> v\u00e0 <\/span><span style=\"font-weight: 400;\">lastname<\/span><span style=\"font-weight: 400;\">. T\u00e0i li\u1ec7u m\u1edbi c\u00f3 s\u1eb5n ngay l\u1eadp t\u1ee9c t\u1eeb b\u1ea5t k\u1ef3 node n\u00e0o trong cluster. B\u1ea1n c\u00f3 th\u1ec3 truy xu\u1ea5t b\u1eb1ng y\u00eau c\u1ea7u GET ch\u1ec9 \u0111\u1ecbnh ID t\u00e0i li\u1ec7u c\u1ee7a n\u00f3:\u00a0<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">GET \/customer\/_doc\/1<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">\u0110\u1ec3 th\u00eam nhi\u1ec1u t\u00e0i li\u1ec7u trong m\u1ed9t y\u00eau c\u1ea7u, h\u00e3y s\u1eed d\u1ee5ng <\/span><span style=\"font-weight: 400;\">_bulk<\/span><span style=\"font-weight: 400;\"> API. D\u1eef li\u1ec7u h\u00e0ng lo\u1ea1t ph\u1ea3i l\u00e0 JSON ph\u00e2n c\u00e1ch b\u1eb1ng d\u00f2ng m\u1edbi (NDJSON). M\u1ed7i d\u00f2ng ph\u1ea3i k\u1ebft th\u00fac b\u1eb1ng k\u00fd t\u1ef1 d\u00f2ng m\u1edbi (<\/span><span style=\"font-weight: 400;\"> \\n<\/span><span style=\"font-weight: 400;\">), bao g\u1ed3m c\u1ea3 d\u00f2ng cu\u1ed1i c\u00f9ng.<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">PUT customer\/_bulk<\/span>\n\n<span style=\"font-weight: 400;\">{ \"create\": { } }<\/span>\n<span style=\"font-weight: 400;\">{ \"firstname\": \"Monica\",\"lastname\":\"Rambeau\"}<\/span>\n\n<span style=\"font-weight: 400;\">{ \"create\": { } }<\/span>\n<span style=\"font-weight: 400;\">{ \"firstname\": \"Carol\",\"lastname\":\"Danvers\"}<\/span>\n\n<span style=\"font-weight: 400;\">{ \"create\": { } }<\/span>\n<span style=\"font-weight: 400;\">{ \"firstname\": \"Wanda\",\"lastname\":\"Maximoff\"}<\/span>\n\n<span style=\"font-weight: 400;\">{ \"create\": { } }<\/span>\n<span style=\"font-weight: 400;\">{ \"firstname\": \"Jennifer\",\"lastname\":\"Takeda\"}<\/span><\/pre>\n<h3><b>T\u00ecm ki\u1ebfm<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">T\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u1eadp index c\u00f3 th\u1ec3 t\u00ecm ki\u1ebfm g\u1ea7n nh\u01b0 theo th\u1eddi gian th\u1ef1c. T\u00ecm ki\u1ebfm sau \u0111\u00e2y kh\u1edbp v\u1edbi t\u1ea5t c\u1ea3 kh\u00e1ch h\u00e0ng c\u00f3 t\u00ean Jennifer trong customer index.<\/span><\/p>\n<pre><span style=\"font-weight: 400;\">GET customer\/_search<\/span>\n<span style=\"font-weight: 400;\">{<\/span>\n<span style=\"font-weight: 400;\"> \u00a0\"query\" : {<\/span>\n<span style=\"font-weight: 400;\">\"match\" : { \"firstname\": \"Jennifer\" }<\/span>\n<span style=\"font-weight: 400;\"> \u00a0}<\/span>\n<span style=\"font-weight: 400;\">}<\/span><\/pre>\n<h3><b>Explore<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Discover trong Kibana \u0111\u1ec3 t\u00ecm ki\u1ebfm v\u00e0 l\u1ecdc d\u1eef li\u1ec7u theo c\u00e1ch t\u01b0\u01a1ng t\u00e1c. T\u1eeb \u0111\u00f3, b\u1ea1n b\u1eaft \u0111\u1ea7u t\u1ea1o h\u00ecnh \u1ea3nh tr\u1ef1c quan v\u00e0 x\u00e2y d\u1ef1ng c\u0169ng nh\u01b0 chia s\u1ebb b\u1ea3ng th\u00f4ng tin. \u0110\u1ec3 b\u1eaft \u0111\u1ea7u, h\u00e3y t\u1ea1o ch\u1ebf \u0111\u1ed9 xem d\u1eef li\u1ec7u k\u1ebft n\u1ed1i v\u1edbi m\u1ed9t ho\u1eb7c nhi\u1ec1u Elasticsearch index, data stream ho\u1eb7c index alias.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">V\u00e0o Management &gt; Stack Management &gt; Kibana &gt; Data View.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ch\u1ecdn Create data view.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nh\u1eadp t\u00ean cho data view v\u00e0 m\u1eabu ph\u00f9 h\u1ee3p v\u1edbi m\u1ed9t ho\u1eb7c nhi\u1ec1u index, ch\u1eb3ng h\u1ea1n nh\u01b0 Customer.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ch\u1ecdn Save data view to Kibana .<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">\u00a0\u0110\u1ec3 b\u1eaft \u0111\u1ea7u kh\u00e1m ph\u00e1, h\u00e3y v\u00e0o Analytics &gt; Discover.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cau_hoi_thuong_gap_ve_Elasticsearch_la_gi\"><\/span><b> C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 Elasticsearch l\u00e0 g\u00ec<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><b> Elasticsearch l\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u SQL hay NoSQL?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u0110\u01b0\u1ee3c x\u00e2y d\u1ef1ng b\u1eb1ng Java, Elasticsearch l\u00e0 c\u01a1 s\u1edf d\u1eef li\u1ec7u NoSQL. \u0110i\u1ec1u \u0111\u00f3 c\u00f3 ngh\u0129a l\u00e0 Elasticsearch l\u01b0u tr\u1eef d\u1eef li\u1ec7u theo c\u00e1ch kh\u00f4ng c\u00f3 c\u1ea5u tr\u00fac. B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng SQL \u0111\u1ec3 truy v\u1ea5n d\u1eef li\u1ec7u th\u00f4ng qua t\u00ednh n\u0103ng Elasticsearch SQL t\u1eeb phi\u00ean b\u1ea3n 6.3.<\/span><\/p>\n<blockquote><p><em>\u0110\u1ecdc th\u00eam: <a href=\"\/blog\/sql-database-la-gi\/\" target=\"_blank\" rel=\"noopener\"><strong>SQL Database \u2013 Ng\u00f4n ng\u1eef truy v\u1ea5n m\u1ea1nh m\u1ebd cho c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/strong><\/a><\/em><\/p><\/blockquote>\n<h3><b>Elasticsearch c\u00f3 th\u1ec3 thay th\u1ebf SQL kh\u00f4ng?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Elasticsearch v\u00e0 SQL c\u00f3 nh\u1eefng \u0111\u1eb7c tr\u01b0ng ri\u00eang li\u00ean quan \u0111\u1ebfn lo\u1ea1i c\u01a1 s\u1edf d\u1eef li\u1ec7u, c\u1ea5u tr\u00fac d\u1eef li\u1ec7u, kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng, hi\u1ec7u su\u1ea5t, kh\u1ea3 n\u0103ng ph\u00e2n t\u00edch, chi ph\u00ed\u2026<\/span><\/p>\n<p><span style=\"font-weight: 400;\">T\u00f9y v\u00e0o ho\u00e0n c\u1ea3nh s\u1eed d\u1ee5ng m\u00e0 ch\u00fang ta s\u1ebd ch\u1ecdn c\u00e1c m\u00f4 h\u00ecnh kh\u00e1c nhau:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">N\u1ebfu b\u1ea1n mu\u1ed1n t\u00ecm ki\u1ebfm to\u00e0n v\u0103n b\u1ea3n v\u00e0 ph\u00e2n t\u00edch tr\u00ean d\u1eef li\u1ec7u b\u00e1n c\u1ea5u tr\u00fac v\u00e0 phi c\u1ea5u tr\u00fac, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng <strong>Elasticsearch<\/strong>;<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Ho\u1eb7c b\u1ea1n s\u1eed d\u1ee5ng <a href=\"\/blog\/sql-server-la-gi\/\" target=\"_blank\" rel=\"noopener\"><strong>SQL Server<\/strong><\/a> n\u1ebfu mu\u1ed1n l\u00e0m vi\u1ec7c v\u1edbi d\u1eef li\u1ec7u c\u00f3 c\u1ea5u tr\u00fac v\u00e0 qu\u1ea3n l\u00fd c\u00e1c giao d\u1ecbch OLTP.<\/span><\/li>\n<\/ul>\n<h3><b>M\u1ee5c \u0111\u00edch ch\u00ednh c\u1ee7a Elasticsearch l\u00e0 g\u00ec?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Elasticsearch \u0111\u01b0\u1ee3c t\u1ed1i \u01b0u h\u00f3a v\u1ec1 t\u1ed1c \u0111\u1ed9 v\u00e0 li\u00ean quan \u0111\u1ebfn kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c \u1edf quy m\u00f4 s\u1ea3n xu\u1ea5t. S\u1eed d\u1ee5ng Elasticsearch \u0111\u1ec3 t\u00ecm ki\u1ebfm, l\u1eadp ch\u1ec9 m\u1ee5c, l\u01b0u tr\u1eef v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u \u1edf m\u1ecdi h\u00ecnh d\u1ea1ng v\u00e0 k\u00edch th\u01b0\u1edbc trong th\u1eddi gian g\u1ea7n nh\u01b0 th\u1ef1c t\u1ebf.<\/span><\/p>\n<h3><b>T\u1ea1i sao Elasticsearch l\u1ea1i ph\u1ed5 bi\u1ebfn \u0111\u1ebfn v\u1eady?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Elasticsearch cung c\u1ea5p c\u00e1c API m\u1edf r\u1ed9ng \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ecm ki\u1ebfm v\u00e0 t\u1ed5ng h\u1ee3p d\u1eef li\u1ec7u ngay l\u1eadp t\u1ee9c. Elasticsearch \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean Apache Lucene, th\u01b0 vi\u1ec7n t\u00ecm ki\u1ebfm v\u0103n b\u1ea3n ngu\u1ed3n m\u1edf \u0111\u01b0\u1ee3c vi\u1ebft b\u1eb1ng Java, \u0111\u00e3 t\u1ed3n t\u1ea1i h\u01a1n 20 n\u0103m v\u00e0 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong nhi\u1ec1u \u1ee9ng d\u1ee5ng. Elasticsearch ph\u1ed5 bi\u1ebfn nh\u01b0 m\u1ed9t c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm c\u1ea5p doanh nghi\u1ec7p, cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng t\u00ecm th\u00f4ng tin nhanh ch\u00f3ng trong l\u01b0\u1ee3ng l\u1edbn d\u1eef li\u1ec7u c\u00f3 c\u1ea5u tr\u00fac \u0111\u1ec3 c\u00f3 k\u1ebft qu\u1ea3 li\u00ean quan v\u00e0 ph\u00e2n t\u00edch m\u1ea1nh m\u1ebd.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tong_ket_Elasticsearch_la_gi\"><\/span><b>T\u1ed5ng k\u1ebft Elasticsearch l\u00e0 g\u00ec<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Elasticsearch n\u1ed5i b\u1eadt nh\u01b0 m\u1ed9t c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch m\u1ea1nh m\u1ebd, c\u00f3 kh\u1ea3 n\u0103ng x\u1eed l\u00fd kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 m\u1ed9t c\u00e1ch nhanh ch\u00f3ng v\u00e0 hi\u1ec7u qu\u1ea3. Ki\u1ebfn tr\u00fac ph\u00e2n t\u00e1n k\u1ebft h\u1ee3p v\u1edbi Inverted index, cho ph\u00e9p truy v\u1ea5n g\u1ea7n nh\u01b0 theo th\u1eddi gian th\u1ef1c v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng linh ho\u1ea1t. Hi\u1ec3u r\u00f5 Elasticsearch l\u00e0 g\u00ec s\u1ebd gi\u00fap b\u1ea1n x\u00e2y d\u1ef1ng \u0111\u01b0\u1ee3c m\u1ed9t \u1ee9ng d\u1ee5ng t\u00ecm ki\u1ebfm, ph\u00e2n t\u00edch nh\u1eadt k\u00fd hay gi\u00e1m s\u00e1t h\u1ec7 th\u1ed1ng m\u1ea1nh m\u1ebd kh\u00f4ng th\u1ec3 thi\u1ebfu.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trong k\u1ef7 nguy\u00ean s\u1ed1 h\u00f3a, vi\u1ec7c qu\u1ea3n l\u00fd v\u00e0 khai th\u00e1c hi\u1ec7u qu\u1ea3 kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 c\u1ee7a \u1ee9ng d\u1ee5ng lu\u00f4n l\u00e0 m\u1ed9t th\u00e1ch th\u1ee9c. Elasticsearch \u0111\u00e3 gi\u00fap c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn gi\u1ea3i quy\u1ebft b\u00e0i to\u00e1n kh\u00f3 kh\u0103n n\u00e0y v\u1edbi kh\u1ea3 n\u0103ng t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u theo th\u1eddi [&hellip;]<\/p>\n","protected":false},"author":205,"featured_media":85395,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109],"tags":[],"class_list":["post-85115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Elasticsearch l\u00e0 g\u00ec? C\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y Elasticsearch th\u1ebf n\u00e0o? - ITviec Blog<\/title>\n<meta name=\"description\" content=\"Elasticsearch l\u00e0 gi\u1ea3i ph\u00e1p t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c m\u1ea1nh m\u1ebd. T\u00ecm hi\u1ec3u ngay Elasticsearch l\u00e0 g\u00ec, c\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"T\u1eeb A \u0111\u1ebfn Z v\u1ec1 Elasticsearch: \u201cV\u0169 kh\u00ed\u201d b\u00ed m\u1eadt cho c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn\" \/>\n<meta property=\"og:description\" content=\"Trong k\u1ef7 nguy\u00ean s\u1ed1 h\u00f3a, vi\u1ec7c qu\u1ea3n l\u00fd v\u00e0 khai th\u00e1c hi\u1ec7u qu\u1ea3 kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 c\u1ee7a \u1ee9ng d\u1ee5ng lu\u00f4n l\u00e0 m\u1ed9t th\u00e1ch th\u1ee9c. Elasticsearch \u0111\u00e3 gi\u00fap c\u00e1c \u1ee9ng\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-28T04:59:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-17T08:29:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/Elasticsearch-la-gi-vippro-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"337\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"H\u00e0 My\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"H\u00e0 My\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Elasticsearch l\u00e0 g\u00ec? C\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y Elasticsearch th\u1ebf n\u00e0o? - ITviec Blog","description":"Elasticsearch l\u00e0 gi\u1ea3i ph\u00e1p t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c m\u1ea1nh m\u1ebd. T\u00ecm hi\u1ec3u ngay Elasticsearch l\u00e0 g\u00ec, c\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"T\u1eeb A \u0111\u1ebfn Z v\u1ec1 Elasticsearch: \u201cV\u0169 kh\u00ed\u201d b\u00ed m\u1eadt cho c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn","og_description":"Trong k\u1ef7 nguy\u00ean s\u1ed1 h\u00f3a, vi\u1ec7c qu\u1ea3n l\u00fd v\u00e0 khai th\u00e1c hi\u1ec7u qu\u1ea3 kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3 c\u1ee7a \u1ee9ng d\u1ee5ng lu\u00f4n l\u00e0 m\u1ed9t th\u00e1ch th\u1ee9c. Elasticsearch \u0111\u00e3 gi\u00fap c\u00e1c \u1ee9ng","og_url":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-03-28T04:59:19+00:00","article_modified_time":"2025-06-17T08:29:37+00:00","og_image":[{"width":640,"height":337,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/Elasticsearch-la-gi-vippro-scaled.png","type":"image\/png"}],"author":"H\u00e0 My","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"H\u00e0 My","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"22 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/"},"author":{"name":"H\u00e0 My","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/7bd099db44e5079508c9b7e8c0161e3c"},"headline":"T\u1eeb A \u0111\u1ebfn Z v\u1ec1 Elasticsearch: \u201cV\u0169 kh\u00ed\u201d b\u00ed m\u1eadt cho c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn","datePublished":"2025-03-28T04:59:19+00:00","dateModified":"2025-06-17T08:29:37+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/"},"wordCount":5944,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/Elasticsearch-la-gi-vippro-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/","url":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/","name":"Elasticsearch l\u00e0 g\u00ec? C\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y Elasticsearch th\u1ebf n\u00e0o? - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/Elasticsearch-la-gi-vippro-scaled.png","datePublished":"2025-03-28T04:59:19+00:00","dateModified":"2025-06-17T08:29:37+00:00","description":"Elasticsearch l\u00e0 gi\u1ea3i ph\u00e1p t\u00ecm ki\u1ebfm v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c m\u1ea1nh m\u1ebd. T\u00ecm hi\u1ec3u ngay Elasticsearch l\u00e0 g\u00ec, c\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 ch\u1ea1y.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/Elasticsearch-la-gi-vippro-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/03\/Elasticsearch-la-gi-vippro-scaled.png","width":640,"height":337,"caption":"Elasticsearch l\u00e0 g\u00ec - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/elasticsearch-la-gi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"T\u1eeb A \u0111\u1ebfn Z v\u1ec1 Elasticsearch: \u201cV\u0169 kh\u00ed\u201d b\u00ed m\u1eadt cho c\u00e1c \u1ee9ng d\u1ee5ng d\u1eef li\u1ec7u l\u1edbn"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/7bd099db44e5079508c9b7e8c0161e3c","name":"H\u00e0 My","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/ha-my-author-e1709882319892-100x100.jpeg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/ha-my-author-e1709882319892-100x100.jpeg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/ha-my-author-e1709882319892-100x100.jpeg","caption":"H\u00e0 My"},"url":"https:\/\/itviec.com\/blog\/author\/ha-my\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/85115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/205"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=85115"}],"version-history":[{"count":2,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/85115\/revisions"}],"predecessor-version":[{"id":88213,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/85115\/revisions\/88213"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/85395"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=85115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=85115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=85115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}