Elasticsearch là gì? Tìm hiểu chi tiết về Elasticsearch

12/07/2022
Banner hosting giá rẻ dành cho sinh viên

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, LogstashKibana, 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. 

Elasticsearch là gì?
Elasticsearch là gì?

>> Xem thêm: SEM là gì? Ưu và nhược điểm của SEM trong chiến lược marketing

Banner Hosting Cao Cấp dành cho SEOer

Đố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.

Cơ chế hoạt động của Elasticsearch
Cơ chế hoạt động của Elasticsearch
Banner Hosting Giá Rẻ dành cho cá nhân

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.

Các khái niệm trong Elasticsearch
Các khái niệm trong Elasticsearch
Hosting Cao Cấp dành cho Web Developer

Ư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. 
Elasticsearch cho phép tích hợp với Beats, Logstash và Kibana
Elasticsearch cho phép tích hợp với Beats, Logstash và Kibana

>> 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:

ElasticsearchRDBMS
IndexTable
DocumentRow
ClusterDatabase
FieldColumn

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

Vậy là bạn đã cài đặt xong và có thể sử dụng Elasticsearch 
Vậy là bạn đã cài đặt xong và có thể sử dụng Elasticsearch 

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:

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!

5/5 - (1 bình chọn)
Banner Hosting Giá Rẻ tại Vietnix
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Yêu cầu Vietnix gọi lại

Vui lòng nhập thông tin để chúng tôi liên hệ lại với bạn