Elastic Search là gì? Tìm hiểu về Elastic Search
Trong thế giới công nghệ ngày nay, một lượng lớn dữ liệu định xấp xỉ 2,5 nghìn tỷ byte được tạo ra mỗi ngày. Dữ liệu này chủ yếu đến từ các nguồn khác nhau: từ các trang social media sites, trang video sharing, cho đến các tổ chức quy mô trung bình đến khổng lồ. Toàn bộ các dữ liệu này được gọi là data ocean hoặc Big Data. Phần lớn khi các dữ liệu này đứng riêng một mình mà không hề có sự thống kê hay phân tích nào, chúng sẽ trở nên vô nghĩa, đồng thời không có chút giá trị nghiên cứu nào cả. Để làm cho các dữ liệu này trở nên ý nghĩa, bạn cần có các công cụ phục vụ cho việc phân tích. Có rất nhiều công cụ phân tích sẵn có trên thị trường giúp bạn có thể khám phá, ghi lại, truy cập, phân tích và xử lý các dữ liệu phi cấu trúc này. Elasticsearch là một trong những công cụ nổi bật nhất.
Elastic Search là gì? (ES)
ElasticSearch
là mộtsearch engine
Elasticsearch
được kế thừa từLucene Apache
Elasticsearch
thực chất hoặt động như 1 web server, có khả năng tìm kiếm nhanh chóng (near realtime) thông qua giao thức RESTfulElasticsearch
có khả năng phân tích và thống kê dữ liệuElasticsearch
chạy trên server riêng và đồng thời giao tiếp thông qua RESTful do vậy nên nó không phụ thuộc vào client viết bằng gì hay hệ thống hiện tại của bạn viết bằng gì. Nên việc tích hợp nó vào hệ thống bạn là dễ dàng, bạn chỉ cần gửi request http lên là nó trả về kết quả.Elasticsearch
là 1 hệ thống phân tán và có khả năng mở rộng tuyệt vời (horizontal scalability). Lắp thêm node cho nó là nó tự động auto mở rộng.Elasticsearch
là 1open source
được phát triển bằngJava
Các khái niệm cơ bản của Elastic Search
1. Document trong Elastic Search là gì?
Document là một JSON object với một số dữ liệu. Đây là basic information unit trong ES. Hiểu 1 cách cơ bản thì đây là đơn vị nhỏ nhất để lưu trữ dữ liệu trong Elasticsearch
.
2. Index
Trong Elasticsearch
, sử dụng một cấu trúc được gọi là inverted index
. Nó được thiết kế để cho phép tìm kiếm full-text search
. Cách thức của nó khá đơn giản, các văn bản được phân tách ra thành từng từ có nghĩa sau đó sẽ đk map xem thuộc văn bản nào. Khi search tùy thuộc vào loại search sẽ đưa ra kết quả cụ thể.
VÍ dụ : Ta có 2 văn bản cụ thể như sau :
1,The quick brown fox jumped over the lazy dog
2,Quick brown foxes leap over lazy dogs in summer
Để tạo ra một inverted index
, trước hết chúng ta sẽ phân chia nội dung của từng tài liệu thành các từ riêng biệt (gọi là terms
), tạo một danh sách được sắp xếp của tất cả terms
duy nhất, sau đó liệt kê tài liệu nào mà mỗi thuật ngữ xuất hiện. Kết quả như sau:
Term Doc_1 Doc_2
-------------------------
Quick | | X
The | X |
brown | X | X
dog | X |
dogs | | X
fox | X |
foxes | | X
in | | X
jumped | X |
lazy | X | X
leap | | X
over | X | X
quick | X |
summer | | X
the | X |
------------------------
Bây giờ, nếu chúng ta muốn tìm kiếm quick brown
, chúng ta chỉ cần tìm trong các tài liệu trong đó mỗi thuật ngữ có xuất xuất hiện hay không. Kết quả như sau:
Term Doc_1 Doc_2
-------------------------
brown | X | X
quick | X |
------------------------
Total | 2 | 1
Như các bạn đã thấy, cả 2 đoạn văn bản đều thích hợp với từ khóa. Tuy nhiên có thể dễ dàng nhận ra rằng Doc_1 chính xác hơn nhiều.
3. Shard
Shard
là đối tượng củaLucene
, là tập con cácdocuments
của 1 Index. Một Index có thể được chia thành nhiều shard.- Mỗi
node
bao gồm nhiềuShard
. Chính vì thếShard
mà là đối tượng nhỏ nhất, hoạt động ở mức thấp nhất, đóng vai trò lưu trữ dữ liệu. - Chúng ta gần như không bao giờ làm việc trực tiếp với các
Shard
vìElasticsearch
đã support toàn bộ việc giao tiếp cũng như tự động thay đổi cácShard
khi cần thiết. - Có 2 loại
Shard
là :primary shard
vàreplica shard.
4. Node
- Là trung tâm hoạt động của Elasticsearch. Là nơi lưu trữ dữ liễu ,tham gia thực hiện đánh
index
cúacluster
cũng như thực hiện các thao tác tìm kiếm - Mỗi
node
được định danh bằng 1 unique name
5. Cluster
- Tập hợp các
nodes
hoạt động cùng với nhau, chia sẽ cùng thuộc tínhcluster.name
. Chính vì thếcluster
sẽ được xác định bằng 1 ‘unique name’. Việc định danh cáccluster
trùng tên sẽ gây nên lỗi cho các node vì vậy khi setup các bạn cần hết sức chú ý điểm này - Mỗi cluster có một
node
chính (master), được lựa chọn một cách tự động và có thể thay thế nếu sự cố xảy ra. Một cluster có thể gồm 1 hoặc nhiềunodes
. Các nodes có thể hoạt động trên cùng 1 server . - Tuy nhiên trong thực tế , một
cluster
sẽ gồm nhiềunodes
hoạt động trên các server khác nhau để đảm bảo nếu 1 server gặp sự cố thì server khác (node khác) có thể hoạt động đầy đủ chức năng so với khi có 2 servers. Cácnode
có thể tìm thấy nhau để hoạt động trên cùng 1 cluster qua giao thứcunicast
.
Chức năng chính của
Cluster
đó chính là quyết định xemshards
nào được phân bổ chonode
nào và khi nào thì di chuyển cácCluster
để cân bằng lạiCluster
Lời kết.
Trong blog này, ta đã thảo luận Elastic Search là gì? Tìm hiểu về Elastic Search. Tôi hy vọng tất cả các bạn sẽ hiểu cơ bản về Elastic Search.
— — —
Cảm ơn vì đã đọc!
Link tài liệu tham khảo : https://topdev.vn/blog/elasticsearch-la-gi/