Elasticsearch là một công nghệ tìm kiếm và phân tích dữ liệu mạnh mẽ, được ứng dụng rộng rãi trên các ứng dụng web và di động. Với khả năng tích hợp và mở rộng linh hoạt, Elasticsearch đã trở thành một công cụ không thể thiếu để quản lý dữ liệu lớn và trích xuất thông tin quan trọng. TVD Media nhận thấy, nếu bạn chưa từng nghe về Elasticsearch, hãy cùng tìm hiểu chi tiết về công cụ này và những lợi ích mà nó mang lại.
Elasticsearch là gì?
Elasticsearch là một công cụ tìm kiếm nguồn mở phổ biến, được ra mắt vào năm 2010 dựa trên Apache Lucene. Elasticsearch cho phép người dùng thực hiện các hoạt động như lưu trữ dữ liệu, tìm kiếm và phân loại dữ liệu một cách chính xác.

Ngày nay, Elasticsearch được nhiều công ty ưu chuộng vì khả năng tìm kiếm hàng triệu hồ sơ chỉ trong vài giây. Điều này giúp cải thiện hiệu suất và trải nghiệm người dùng cho các ứng dụng do doanh nghiệp cung cấp. TVD Media đánh giá cao khả năng này của Elasticsearch.
Elasticsearch hoạt động như thế nào?
Elasticsearch tuân theo nguyên tắc "tải trọng và cân bằng". Dữ liệu được phân tán thành nhiều bản vá (shards) và lưu trữ trên các nút của cụm Elasticsearch.

Mỗi shard là một đơn vị xử lý chuyên nghiệp, thực hiện tìm kiếm và cải tiến độc lập. Elasticsearch cũng hỗ trợ khái niệm "sao chép" (replication), sao chép dữ liệu từ mảng ban đầu sang các mảng chiêm tinh, đảm bảo sự chuẩn bị và độ tin cậy cao hơn.
Những lợi ích của Elasticsearch
Elasticsearch tạo ra sự hấp dẫn cho nhiều công ty nhờ những lợi ích vượt trội. Vậy những lợi ích cụ thể của Elasticsearch là gì?
Elasticsearch mang lại nhiều lợi ích cho doanh nghiệp, bao gồm:
- Tốc độ tìm kiếm nhanh chóng: Elasticsearch có khả năng tìm kiếm dữ liệu cực nhanh, giúp người dùng dễ dàng tìm thấy thông tin họ cần trong thời gian ngắn nhất.
- Khả năng mở rộng linh hoạt: Elasticsearch có thể dễ dàng mở rộng để đáp ứng nhu cầu ngày càng tăng của doanh nghiệp.
- Khả năng phân tích dữ liệu mạnh mẽ: Elasticsearch cung cấp nhiều công cụ phân tích dữ liệu mạnh mẽ, giúp doanh nghiệp hiểu rõ hơn về dữ liệu của mình.
- Dễ dàng sử dụng: Elasticsearch có giao diện người dùng thân thiện và dễ sử dụng, giúp người dùng dễ dàng làm quen và sử dụng công cụ này.
Khái niệm cần biết về Elasticsearch
Hiểu rõ các khái niệm sau sẽ giúp bạn nắm bắt Elasticsearch tốt hơn:
Node
Node là thuật ngữ chỉ trung tâm hoạt động của Elasticsearch. Nó thực hiện các chức năng lưu trữ dữ liệu, tìm kiếm và lập chỉ mục. Mỗi nút được nhận dạng bởi một "tên duy nhất" và giá trị mặc định là mặc định.

Cụm (Cluster)
Cụm bao gồm một bộ các nút được sử dụng trên cùng một máy chủ. Cụm được xác định bởi "tên duy nhất" và chia sẻ các thuộc tính chung. Mỗi cụm có một nút chính (master node), được chọn tự động và thay thế khi gặp sự cố.
Tài liệu (Document)
Tài liệu là đơn vị dữ liệu quen thuộc với Elasticsearch. Mỗi tài liệu thuộc về một loại (type), có một định danh duy nhất gọi là UID, liên kết với một chỉ mục (index).
Chỉ mục (Index)
Trong Elasticsearch, chỉ mục đảo ngược là một cấu trúc được chỉ định trước, cho phép tìm kiếm nhanh chóng. Tài liệu được chia thành các từ có ý nghĩa, và bản đồ được xem xét. Kết quả tìm kiếm phụ thuộc vào loại tìm kiếm.

Shard
Shard là đối tượng của phần mềm Lucene và bộ sưu tập tài liệu chỉ mục. Các chỉ mục thường được chia thành nhiều mảnh. Shard là các đối tượng nhỏ nhất, chạy và thực hiện các chức năng lưu trữ dữ liệu ở mức thấp nhất. Có hai loại shard chính: shard chính (primary shard) và shard sao chép (replica shard).
Đoạn chính (Primary Shard)
Shard chính là vị trí lưu trữ dữ liệu và chỉ mục. Sau đó, dữ liệu được chuyển đến bản sao của các shard vỡ. Mỗi chỉ số có 5 shard chính, tương ứng với 5 shard sao chép.

Sao chép các mảnh vỡ (Replica Shard)
Shard sao chép thực hiện nhiệm vụ lưu trữ dữ liệu từ các shard chính. Trong trường hợp shard chính gặp sự cố, shard sao chép đảm bảo tính toàn vẹn của dữ liệu và tăng tốc độ tìm kiếm. Có thể tạo nhiều bản sao của shard sao chép hơn giá trị mặc định của ES.
Ưu điểm của Elasticsearch
Elasticsearch có nhiều ưu điểm tuyệt vời:

- Tìm kiếm toàn văn bản: Elasticsearch mạnh mẽ trong việc tìm kiếm toàn văn bản, cho phép bạn tìm kiếm các tài liệu chứa các từ khóa cụ thể.
- Khả năng mở rộng: Elasticsearch có thể mở rộng quy mô một cách dễ dàng để xử lý lượng dữ liệu lớn. Bạn có thể thêm nhiều nút (nodes) vào cluster để tăng khả năng xử lý.
- Phân tích dữ liệu: Elasticsearch cung cấp các công cụ phân tích dữ liệu mạnh mẽ, giúp bạn hiểu rõ hơn về dữ liệu của mình.
- Thời gian thực: Elasticsearch cung cấp khả năng tìm kiếm và phân tích dữ liệu theo thời gian thực.
- Mã nguồn mở: Elasticsearch là một dự án mã nguồn mở, có nghĩa là bạn có thể sử dụng nó miễn phí và tùy chỉnh nó theo nhu cầu của mình.
Những thiếu sót của Elasticsearch
Bên cạnh những ưu điểm, Elasticsearch vẫn còn một số thiếu sót mà các lập trình viên cần lưu ý:
- Yêu cầu tài nguyên: Elasticsearch có thể yêu cầu một lượng tài nguyên đáng kể, đặc biệt là bộ nhớ.
- Độ phức tạp: Elasticsearch có thể phức tạp để cài đặt và cấu hình, đặc biệt là đối với người mới bắt đầu.
- Không phải là cơ sở dữ liệu quan hệ: Elasticsearch không phải là một cơ sở dữ liệu quan hệ và không hỗ trợ các tính năng như ACID.
Cài đặt Elasticsearch
Để cài đặt Elasticsearch, cần chú ý đến các yêu cầu và cài đặt sau:
Yêu cầu
Elasticsearch yêu cầu Java phiên bản 8 trở lên, và biến môi trường JAVA_HOME phải được đặt. Đảm bảo rằng phiên bản Java >= 8 đã được cài đặt thành công trước khi cài đặt Elasticsearch. Kiểm tra biến môi trường bằng lệnh echo $JAVA_HOME
.
Môi trường
Có hai phương pháp cài đặt Elasticsearch:
Phương pháp 1: Sử dụng Kho lưu trữ APT (dành cho Debian/Ubuntu)
- Tải khóa GPG của Elasticsearch:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- Cài đặt gói `apt-transport-https`:
sudo apt-get install apt-transport-https
- Thêm kho lưu trữ Elasticsearch vào danh sách nguồn APT:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
- Cập nhật danh sách gói và cài đặt Elasticsearch:
sudo apt-get update && sudo apt-get install elasticsearch
Phương pháp 2: Cài đặt gói phần mềm .deb
Để cài đặt Elasticsearch bằng gói phần mềm .deb, thực hiện các lệnh sau:
WGET https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.6-amd64.deb WGET https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.6-amd64.deb.sha512 shasum -a 512 -c elasticsearch-7.17.6-amd64.deb.sha512 sudo dpkg -i elasticsearch-7.17.6-amd64.deb
Lưu ý: Thay thế `7.17.6` bằng phiên bản Elasticsearch bạn muốn cài đặt.
Done!
Làm thế nào để chạy Elasticsearch?

Sau khi cài đặt, Elasticsearch không tự động chạy. Bạn cần khởi động nó thủ công bằng lệnh: sudo systemctl start elasticsearch.service
và sau đó kiểm tra trạng thái bằng lệnh: sudo systemctl status elasticsearch.service
.
Như vậy, bạn đã hoàn thành việc cài đặt và có thể chạy Elasticsearch.
Cách sử dụng các lệnh để truy cập dữ liệu trên Elasticsearch
Dưới đây là một số phương pháp sử dụng lệnh để truy cập dữ liệu trên Elasticsearch:
Liệt kê các chỉ mục trong Elasticsearch: curl -X GET "localhost:9200/_cat/indices?v"
Tạo "tài liệu" của "chỉ mục" (thêm thành viên với các trường thuộc tính):
curl -X PUT "http://localhost:9200/group?pretty" -H 'Content-Type: application/json' -d' { "mappings": { "properties": { "name": { "type": "text" }, "email": { "type": "text" }, "age": { "type": "integer" }, "phone": { "type": "text" }, "image": { "type": "text" }, "technology": { "type": "text" } } } } '
Kiểm tra tất cả các chỉ mục: curl -X GET http://localhost:9200/group?pretty
Thêm dữ liệu (nhóm):
curl -X POST "http://localhost:9200/group/_doc?pretty" -H 'Content-Type: application/json' -d' { "name": "John Doe", "email": "[email protected]", "age": 30, "phone": "123-456-7890", "image": "john.jpg", "technology": "Ruby" } '
Sau khi thêm dữ liệu, xem dữ liệu và từng tài liệu sau khi thêm:
curl -X GET http://localhost:9200/group/_doc/1?pretty
Tìm kiếm tất cả dữ liệu của tài liệu trong "INDEX": curl -X GET "http://localhost:9200/_search?pretty"
Tìm kiếm theo tất cả các trường trong tài liệu: curl -X GET "http://localhost:9200/_search?q=Ruby&pretty"
Xóa 1 Chỉ số: curl -X DELETE "localhost:9200/group?pretty"
Lưu ý: Hãy cẩn thận khi sử dụng lệnh DELETE vì nó sẽ xóa vĩnh viễn dữ liệu.
Qua bài viết này, TVD Media đã chia sẻ với bạn khái niệm về Elasticsearch cũng như các bước cài đặt cơ bản. Với Elasticsearch, việc tìm và hiểu dữ liệu trở nên dễ dàng hơn bao giờ hết, giúp các doanh nghiệp đưa ra quyết định linh hoạt và hiệu quả.
Xem thêm: