Elasticsearch Là Gì? Ưu Và Nhược điểm Của Elasticsearch - Vietnix
Có thể bạn quan tâm
Elasticsearch là gì? Với những ai mới “bước chân” vào ngành lập trình, hẳn khái niệm này còn khá mới mẻ đối với bạn. Hãy cùng Vietnix tìm hiểu về công dụng Elasticsearch, ưu nhược điểm của Elasticsearch, hướng dẫn cài đặt và sử dụng Elasticsearch “từ A đến Z”.
Elasticsearch là gì?
Elasticsearch là một dạng Search Engine (Công cụ tìm kiếm) phát triển dựa trên nền tảng Apache Lucene. Elasticsearch được ra mắt năm 2010 bởi Shay Banon, được xây dựng bằng ngôn ngữ Java, với giao diện web HTTP có hỗ trợ JSON. Nó cho phép ta chuyển dữ liệu vào và tìm kiếm trực tiếp, thay vì tìm kiếm trong một hệ quản lý cơ sở dữ liệu thông thường như Oracle, MySQL,…
Elasticsearch cung cấp cho người dùng một hệ thống tìm kiếm dạng phân tán, phù hợp với tệp dữ liệu lớn. Elasticsearch thường được sử dụng trong việc tìm kiếm đơn giản trên trang web, chỉ mục và thu thập dữ liệu, cho đến phân tích và trực quan hóa dữ liệu kinh doanh.
Elasticsearch thường hoạt động với các thành phần khác trong ELK Stack, Logstash và Kibana, trong đó đóng vai trò lập chỉ mục dữ liệu.
Ngay từ khi ra mắt, Elasticsearch đã gây ấn tượng với giới developer và nhanh chóng trở thành một trong những công cụ tìm kiếm phổ biến nhất.
Xem thêm: Hướng dẫn cài đặt Elasticsearch trên Ubuntu 20.04 chi tiết
Đối tượng sử dụng Elasticsearch
Bạn nên sử dụng Elasticsearch cho những trường hợp sau:
- Tìm kiếm thông tin dạng text thông thường.
- Tìm kiếm thông tin dạng text và dữ liệu có cấu trúc.
- Tổng hợp và phân tích dữ liệu kinh doanh yêu cầu bảo mật.
- Xử lý và lưu trữ dữ liệu số lượng lớn.
- Ghi nhật ký và phân tích nhật ký.
- Kiểm tra hiệu năng hoạt động của ứng dụng.
- Tìm kiếm dữ liệu theo tọa độ, tổng quan hóa dữ liệu trên không gian địa lý.
Elasticsearch hiện được sử dụng phổ biến bởi các doanh nghiệp lớn như Facebook, Adobe Systems, Wikipedia, StackOverflow, Netflix, GitHub,…
Elasticsearch hoạt động như thế nào?
Về cơ bản, Elasticsearch hoạt động như một Cloud Server có khả năng tìm kiếm thông qua cơ chế RESTful. Trong đó, người dùng tạo ra các HTTP Request và dữ liệu dạng JSON, sau đó nhập vào Elasticsearch. Các dữ liệu này đều được đánh Index (Chỉ mục), giúp đem lại hiệu quả tìm kiếm rất cao.
Đầu tiên, dữ liệu được đưa vào Elasticsearch từ nhiều nguồn khác nhau, sau đó được phân tích, xử lý, trong quá trình nhập liệu. Tiếp theo, dữ liệu được phân loại và chỉ mục, được đẩy lên Server Elasticsearch. Cuối cùng, người dùng có thể tạo các truy vấn phức tạp và lấy dữ liệu được trả về từ server Elasticsearch.
Lý do nên sử dụng Elasticsearch?
Sau đây là những lí do bạn nên sử dụng Elasticsearch:
Elasticsearch được lập trình bằng ngôn ngữ Java, sở hữu các tính năng chung trong Java như thêm, sửa, xóa dữ liệu đối với giao diện web HTTP, giúp người dùng dễ thao tác và kiểm soát hoạt động.
Ngoài ra, Elasticsearch hoạt động trên server riêng, không phụ thuộc vào ngôn ngữ hay hệ thống lập trình của người dùng. Nhờ đó rất dễ dàng tích hợp vào hệ thống, người dùng chỉ cần gửi request HTTP và kết quả sẽ được trả về.
Các khái niệm cần biết về Elasticsearch
1. Document
Document là thông tin cơ bản được lập chỉ mục trong Elasticsearch, là đơn vị lưu trữ dữ liệu nhỏ nhất trong Elasticsearch. Document có thể là văn bản, hoặc có thể là bất kỳ dạng cấu trúc dữ liệu nào được mã hóa bằng JSON như số, chuỗi, ngày tháng,…
Mỗi Document có một ID duy nhất cho một kiểu dữ liệu duy nhất. Ví dụ, một Document có thể đại diện cho một bài báo bách khoa toàn thư.
2. Index
Index (Chỉ mục) là tập hợp các tài liệu có đặc điểm liên quan về mặt logic. Ví dụ: Trong trang web của một sàn thương mại điện tử, bạn sẽ tìm thấy một Chỉ mục cho Khách hàng, một Chỉ mục cho Sản phẩm,… Chỉ mục được sử dụng để tìm kiếm, thêm mới hoặc xóa các tài liệu trong đó.
Một khái niệm trong Index mà bạn nên biết đó là Inverted Index (Chỉ mục đảo ngược). Chỉ mục đảo ngược không lưu trữ trực tiếp các chuỗi mà chia từng tài liệu thành các cụm từ tìm kiếm riêng lẻ. Nhờ đó, người dùng có thể tìm thấy các kết quả phù hợp nhanh chóng, kể cả trong các tệp dữ liệu với khối lượng lớn.
3. Shard
Shard là tập con các Document của 1 Index, là đơn vị lưu trữ dữ liệu nhỏ nhất, hoạt động ở mức thấp nhất. Bằng cách phân phối Documents trong một Index trên nhiều Shard, Elasticsearch có thể đảm bảo tính dự phòng, bảo vệ hệ thống khỏi lỗi phần cứng và giúp tăng khả năng truy vấn khi hoạt động.
Có 2 loại Shard là : Primary Shard và Replica Shard.
- Primary Shard được lưu trữ dữ liệu và đánh Index, sau đó được vận chuyển tới các Replica Shard.
- Replica Shard là nơi lưu trữ dữ liệu nhân bản của Primary Shard, giúp đảm bảo dữ liệu Primary Shard được toàn vẹn ngay cả khi hệ thống xảy ra vấn đề.
4. Node
Node được coi là bộ phận “đầu não” của Elasticsearch. Đây là nơi lưu trữ dữ liệu trực tiếp, đánh Index của Cluster và thực hiện các thao tác tìm kiếm dữ liệu. Mỗi Node thường được định danh bằng 1 một cái tên duy nhất.
5. Cluster
Cluster là tập hợp các nodes hoạt động cùng với nhau. Mỗi Cluster có một Node chính được lựa chọn tự động, Node này có thể thay thế. Một trong những lỗi sai của các developer mới là định danh các Cluster trùng tên nhau, điều này sẽ gây lỗi cho các Node. Bạn nên lưu ý vấn đề này khi tiến hành setup.
Ưu nhược điểm của Elasticsearch là gì?
Ưu điểm
- Tìm kiếm dữ liệu nhanh chóng: Điều này có được nhờ cơ chế hoạt động của Elasticsearch thay vì tìm kiếm văn bản trực tiếp, nó tìm kiếm một Index. Nó sử dụng cấu trúc Document thay vì bảng và lược đồ.
- Khả năng phân phối mở rộng: Bản chất phân tán của Elasticsearch giúp người dùng mở rộng quy mô lên hàng trăm, hàng nghìn máy chủ và xử lý hàng petabyte dữ liệu.
- Đơn giản hóa hiển thị và báo cáo dữ liệu: Elasticsearch cho phép tích hợp với Beats và Logstash, giúp người dùng dễ dàng xử lý dữ liệu trước khi đưa vào Elasticsearch. Ngoài ra, khả năng trực quan hóa giao diện giúp truy cập dữ liệu một cách nhanh chóng.
- Tính năng vượt trội: Elasticsearch cung cấp một số tính năng vượt trội cho phép người dùng lưu trữ và tìm kiếm dữ liệu hiệu quả như cuộn dữ liệu và quản lý vòng đời Index.
- Ngoài ra, Elasticsearch cũng hỗ trợ dữ liệu từ Java, PhP, Javascript, .NET, Python, giúp người dùng dễ dàng hơn trong quá trình sử dụng và chuyển đổi.
Nhược điểm
- Elasticsearch được thiết kế chủ yếu cho việc search dữ liệu, do vậy yếu thế hơn so với các database khác về các mục đích ngoài search.
- Elasticsearch không thích hợp với những hệ thống thường xuyên cập nhật dữ liệu.
>> Xem thêm: PHP-FPM là gì? Mọi thứ bạn cần biết về PHP-FPM
So sánh Elasticsearch với RDBMS
RDBMS là Hệ thống cơ sở quản lý dữ liệu quan hệ, gồm có các công cụ như Oracle, MySQL, MS Server, PostgreSQL.
Sau đây là sự khác biệt giữa Elasticsearch với RDBMS:
Elasticsearch | RDBMS |
---|---|
Index | Table |
Document | Row |
Cluster | Database |
Field | Column |
Hướng dẫn cài đặt và chạy ElasticSearch
Để cài đặt và sử dụng Elasticsearch, bạn cần có Java 8 trở lên và phải thiết lập biến môi trường JAVA_HOME. Bạn có thể kiểm tra biến môi trường JAVA_HOME bằng lệnh: echo $JAVA_HOME
Cài đặt Elasticsearch
Có 2 cách cài đặt ES mà bạn có thể lựa chọn:
Cách 1: Sử dụng APT Repository
Bước 1: Cài gói apt-transport-https
sudo apt-get install apt-transport-https
Bước 2: Lưu định nghĩa repository vào /etc/apt/sources.list.d/elastic-6.x.list:
(Repository mặc định KHÔNG có elasticsearch)
echo “deb https://artifacts.elastic.co/packages/6.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Bước 3: Cài đặt Elasticsearch bằng lệnh:
sudo apt-get update && sudo apt-get install elasticsearch
Cách 2: Sử dụng File .deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.deb.sha512
shasum -a 512 -c elasticsearch-6.4.0.deb.sha512
sudo dpkg -i elasticsearch-6.4.0.deb
Chạy Elasticsearch
Elasticsearch sẽ không tự động chạy sau khi cài đặt và bạn sẽ cần phải khởi động nó theo cách thủ công. Lệnh để chạy server elasticsearch$ sudo systemctl start elasticsearch.service:
$ sudo systemctl start elasticsearch.service
Tài liệu tham khảo về Elasticsearch
Bạn có thể tìm hiểu sâu hơn về cách sử dụng và hoạt động của Elasticsearch trong các tài liệu dưới đây:
- https://www.tutorialspoint.com/elasticsearch/elasticsearch_search_apis.htm
- https://www.elastic.co/guide/index.html
Các câu hỏi thường gặp về Elasticsearch
Sự khác biệt giữa Elasticsearch và MongoDB là gì?
Đối với Elasticsearch được xây dựng cho mục đích giúp cho bạn tìm kiếm và cung cấp khả năng lập chỉ mục nâng cao cho đến việc phân tích và trực hóa dữ liệu doanh nghiệp. Về việc phân tích dữ liệu, Elasticsearch hoạt động cùng với Kibana và Logstash để tạ thành ngăn xếp ELK.
Đối với MongoDB là một chương trình giúp bạn quản lí các dư liệu NoSQL, thường được sử dụng để quản lí một lượng lớn dữ liệu trong một kiến thức phân tán.
Vì sao nên sử dụng Elasticsearch thay vì sử dụng SQL?
Bạn sẽ muốn sử dụng Elasticsearch khi bạn muốn thực hiện việc tìm kiếm nhiều văn bản , bởi vì nơi cơ sở dữ liệu RDBMS truyền thống sẽ hoạt động với một kết quả không tốt ( cấu hình kém, hoạt động như một hộp đen, hiệu suất không cao). Elasticsearch có một khả nang tùy biến tốt, nó có thể mở rộng thông qua các plugin. Hoặc bạn có thể xây dựng tìm kiếm thật mạnh mẽ mà không cần phải có nhiều kiến thức khá nhanh.
Elasticsearch thuộc loại cơ sở dữ liệu nào?
Elasticsearch thuộc loại cơ cở dữ liệu NoSQL, nó hoàn toàn mã nguồn mở và xây dựng bằng ngôn ngữ Java, vì Elasticsearch là một cơ sở dữ liệu NoSQL. Vậy né sẽ lưu trữ dữ liệu theo cách phi cấu trúc và bạn không thể dử dụng SQL để truy vấn nó.
Lời kết
Trên đây, Vietnix đã cùng bạn tìm hiểu Elasticsearch là gì, ưu nhược điểm của Elasticsearch, cách cài đặt và chạy phần mềm Elasticsearch. Mong rằng qua bài viết này, các developer sẽ có thêm những kiến thức hữu ích, giúp ích cho quá trình làm việc của bạn sau này!
Từ khóa » Elasticsearch Nghĩa Là Gì
-
Elasticsearch Là Gì? | Khái Niệm Cơ Bản Về Elasticsearch | TopDev
-
Elasticsearch Là Gì ? - Viblo
-
Elasticsearch Là Gì? - Viblo
-
Elasticsearch Là Gì? Kiến Thức Tổng Quan Về Elasticsearch - ITNavi
-
Elasticsearch Là Gì? - Kipalog
-
Elasticsearch Là Gì? Cách Sử Dụng Elasticsearch - Bizfly Cloud
-
Elasticsearch Là Gì? – Amazon Web Services
-
Elasticsearch Là Gì? Định Nghĩa, Khái Niệm - Làm Cha Cần Cả đôi Tay
-
Elasticsearch Là Gì? Ưu điểm Và Nhược điểm Của Elasticsearch
-
Elasticsearch Là Gì? Mô Hình, đặc điểm Và Cài đặt ... - Anonystick
-
Elasticsearch Là Gì? Những Thông Tin Hữu ích Không Thể Bỏ Lỡ
-
Giới Thiệu Và Cài đặt Elasticsearch Và Kibana Là Gì
-
Elasticsearch - Hướng Dẫn - Mới Cập Nhập - Update Thôi
-
Hướng Dẫn đọc,ghi Dữ Liệu Và Truy Vấn Dữ Liệu Trên Elasticsearch