Giới Thiệu
Bài viết này thuộc series "NestJS Thực Chiến". Chúng ta sẽ cùng nhau khám phá Elasticsearch, một công cụ tìm kiếm mạnh mẽ và cách tích hợp nó vào dự án NestJS. Link bài viết trước: Tại đây
🌟 Tại Sao Nên Sử Dụng Elasticsearch?
Elasticsearch là một công cụ tìm kiếm hiệu quả, dễ dàng tích hợp và mở rộng. Với một hệ thống cluster mạnh mẽ, nó cho phép quản lý và tìm kiếm dữ liệu một cách nhanh chóng và chính xác hơn so với các cơ sở dữ liệu truyền thống.
Những Lợi Ích Khi Sử Dụng Elasticsearch
- Search Engine Mạnh Mẽ: Elasticsearch hoạt động như một search engine với RESTful API linh hoạt, dễ truy cập và tích hợp vào code.
- Kiến Trúc Đa Node: Khả năng mở rộng dễ dàng khi thêm hoặc xóa node. Hệ thống tự động cân bằng tải giữa các node trong cluster.
- Tối Ưu Thời Gian Tìm Kiếm: Với nhiều node, thời gian tìm kiếm được giảm đáng kể nhờ chia sẻ tải giữa các primary shard và replica shard.
- Tính Năng High Availability: Dữ liệu luôn được đảm bảo hơn nhờ các replica shard. Nếu một node chết, cluster sẽ tự động cân bằng lại.
- Phân Tích Dữ Liệu Hiệu Quả: Kết hợp với Kibana, có thể thực hiện phân tích và thống kê dữ liệu dễ dàng hơn.
- Dễ Dàng Index Dữ Liệu: Elasticsearch tự động index tất cả các field, giúp giảm bớt gánh nặng cho lập trình viên.
Kiến Trúc Của Elasticsearch
Elasticsearch bao gồm các thành phần như cluster, index, shard và document. Một cluster bao gồm nhiều node, mỗi node có thể chứa nhiều shard, giúp chia sẻ và quản lý dữ liệu hiệu quả.
Khái Niệm Elasticsearch | Tương Đương RDBMS | Tương Đương NoSQL |
---|---|---|
Cluster | Database instance | Database cluster |
Index | Table / Schema | Collection |
Shard | Table partition / shard | Shard / Partition |
Document | Row | Document |
Field | Column | Field |
Cài Đặt Elasticsearch
Chúng ta sẽ sử dụng Docker để cài đặt Elasticsearch. Dưới đây là cấu hình cơ bản cho một single node:
yaml
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.1
environment:
- discovery.type=single-node
ports:
- "9200:9200"
Quá Trình Tìm Kiếm Dữ Liệu Trong Elasticsearch
Quá trình tìm kiếm được chia thành hai giai đoạn: query
và fetch
, giúp tối ưu hóa hiệu suất và đảm bảo rằng dữ liệu được trả về nhanh chóng và chính xác.
Kết Luận
Elasticsearch là một công cụ mạnh mẽ cho việc tìm kiếm và phân tích dữ liệu. Bài viết đã cung cấp cái nhìn tổng quan về kiến trúc và cách hoạt động của nó. Trong bài viết tiếp theo, chúng ta sẽ thực hành và áp dụng Elasticsearch vào mã nguồn của dự án Flash Card trong NestJS.