Hỏi đáp công nghệ

Elasticsearch là gì? Cơ chế và các khái niệm quan trọng của Elasticsearch

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Table of Contents

Khi mọi người hỏi Elasticsearch là gì, một số người có thể trả lời rằng đó là “chỉ mục”, “công cụ tìm kiếm”, “cơ sở dữ liệu phân tích”, “giải pháp dữ liệu lớn”, rằng “nó nhanh và có thể mở rộng”, hoặc “Nó giống như Google”. Tùy thuộc vào mức độ quen thuộc của bạn với công nghệ này, những câu trả lời này có thể đưa bạn đến gần định nghĩa đúng hơn hoặc lại khiến bạn bối rối hơn nữa. Nhưng sự thật thì tất cả những câu trả lời này đều đúng và đó là một phần tạo nên sức hấp dẫn của Elasticsearch.

Elasticsearch là gì
Elasticsearch là gì?

Trong những năm qua, Elasticsearch và hệ sinh thái của các thành phần phát triển xung quanh nó được gọi là “Elastic Stack” đã được sử dụng ngày càng nhiều trong một số trường hợp, từ tìm kiếm đơn giản trên trang web hoặc tài liệu, thu thập và phân tích log data, đến công cụ kinh doanh thông minh dùng cho phân tích và trực quan hóa dữ liệu.

Vậy làm cách nào mà một công cụ tìm kiếm đơn giản do người đồng sáng lập Elastic, Shay Bannon, tạo ra cho công thức nấu ăn của vợ anh ấy lại phát triển để trở thành công cụ tìm kiếm doanh nghiệp phổ biến nhất hiện nay và là một trong 10 DBMS (Hệ quản trị Cơ sở dữ liệu) phổ biến nhất?

Hỏi đáp Công nghệ sẽ trả lời câu hỏi đó đó trong bài đăng này bằng cách giải thích chi tiết Elasticsearch là gì, cách nó hoạt động và nó được sử dụng như thế nào trong thực tế. Hãy cùng bắt đầu nhé.

Elasticsearch là gì?

Về cốt lõi, bạn có thể coi Elasticsearch là một máy chủ có thể xử lý các yêu cầu JSON và trả lại cho bạn dữ liệu JSON.

Elasticsearch là một công cụ phân tích và tìm kiếm mã nguồn mở, phân tán được xây dựng trên phần mềm Apache Lucene và phát triển bằng Java. Nó bắt đầu như một phiên bản có thể mở rộng của framework tìm kiếm nguồn mở Lucene, sau đó thêm khả năng mở rộng các chỉ số Lucene theo chiều ngang.

Elasticsearch cho phép bạn lưu trữ, tìm kiếm và phân tích khối lượng dữ liệu khổng lồ một cách nhanh chóng, gần như thời gian thực và đưa ra câu trả lời chỉ trong mili giây. Nó có thể đạt được phản hồi tìm kiếm nhanh chóng bởi cơ chế thay vì tìm kiếm trực tiếp văn bản, nó sẽ tìm kiếm một chỉ mục (index).

Nó sử dụng cấu trúc dựa trên tài liệu thay vì bảng hay lược đồ và đi kèm với các RESTful API mở rộng để lưu trữ và tìm kiếm dữ liệu. Về cốt lõi, bạn có thể coi Elasticsearch như một máy chủ có thể xử lý các yêu cầu JSON và trả lại cho bạn dữ liệu JSON.

Elasticsearch hoạt động như thế nào?

Để hiểu rõ hơn về cách Elasticsearch hoạt động, chúng ta hãy trình bày một số khái niệm cơ bản về cách nó tổ chức dữ liệu và các thành phần backend của nó.

Các khái niệm logic

Document

Document (Tài liệu) là đơn vị thông tin cơ bản có thể được lập chỉ mục trong Elasticsearch được thể hiện bằng JSON, là định dạng trao đổi dữ liệu internet toàn cầu. Bạn có thể nghĩ về một Document giống như một hàng trong relational database (cơ sở dữ liệu quan hệ), đại diện cho một entity (thực thể) nhất định – là thứ bạn đang tìm kiếm.

Trong Elasticsearch, một Document có thể không chỉ là văn bản, nó có thể là bất kỳ dữ liệu có cấu trúc nào được mã hóa bằng JSON. Dữ liệu đó có thể là những thứ như số, chuỗi và ngày tháng. Mỗi tài liệu có một ID duy nhất và một kiểu dữ liệu nhất định, mô tả loại entity của tài liệu. Ví dụ, một tài liệu có thể đại diện cho một bài báo bách khoa toàn thư hoặc các mục log từ một máy chủ web.

Index

Index (chỉ mục) là một tập hợp các document có các đặc điểm giống nhau. Index là thực thể cấp cao nhất mà bạn có thể truy vấn trong Elasticsearch. Bạn có thể coi Index giống như một cơ sở dữ liệu trong lược đồ cơ sở dữ liệu quan hệ. Bất kỳ document nào trong một chỉ mục thường có liên quan về mặt logic.

Ví dụ: trong ngữ cảnh của một trang web thương mại điện tử, bạn có thể có một index cho Khách hàng, một index cho Sản phẩm, một cho Đơn đặt hàng, v.v. Index được xác định bằng một cái tên được sử dụng để tham chiếu đến nó trong khi thực hiện các thao tác lập chỉ mục, tìm kiếm, cập nhật và xóa đối với các document trong đó.

Xem thêm >> Endpoint là gì? Tại sao endpoint security lại quan trọng đến thế?

Inverted Index

Index trong Elasticsearch thực sự được gọi là inverted index (chỉ mục đảo ngược), là cơ chế hoạt động của tất cả các công cụ tìm kiếm. Nó là một cấu trúc dữ liệu lưu trữ một ánh xạ từ nội dung, chẳng hạn như các từ hoặc số, đến các vị trí của nó trong một document hoặc một tập hợp các document.

Về cơ bản, nó là một cấu trúc dữ liệu giống như hashmap hướng bạn từ một từ đến một document. Chỉ mục đảo ngược không lưu trữ trực tiếp các chuỗi và thay vào đó chia từng document thành các cụm từ tìm kiếm riêng lẻ (tức là từng từ), sau đó ánh xạ từng cụm từ tìm kiếm với các document mà các cụm từ tìm kiếm đó xuất hiện bên trong.

Ví dụ: trong hình ảnh bên dưới, thuật ngữ xuất hiện nhiều nhất trong document 2, vì vậy nó được ánh xạ tới document đó. Điều này giống như một tra cứu nhanh về nơi tìm các cụm từ tìm kiếm xuất hiện trong một document nhất định. Bằng cách sử dụng các chỉ mục đảo ngược được phân phối, Elasticsearch nhanh chóng tìm thấy các kết quả phù hợp nhất cho các tìm kiếm full-text từ các tập dữ liệu thậm chí rất lớn.

Elasticsearch là gì
Elasticsearch là gì? Inverted Index trong Elasticsearch

Các thành phần Backend

Cluster

Elasticsearch cluster là một nhóm gồm một hoặc nhiều node instance được kết nối với nhau. Sức mạnh của một Elasticsearch cluster nằm ở việc phân phối các tác vụ, tìm kiếm và lập chỉ mục, trên tất cả các node trong cluster.

Node

Mỗi node là một máy chủ duy nhất và là một phần của cluster. Một node lưu trữ dữ liệu và tham gia vào khả năng lập chỉ mục và tìm kiếm của cluster. Một Elasticsearch node có thể được định cấu hình theo nhiều cách khác nhau:

Master Node – Điều khiển Elasticsearch cluster và chịu trách nhiệm cho tất cả các hoạt động trên toàn cluster như tạo/xóa chỉ mục và thêm/xóa các node.

Data Node – Lưu trữ dữ liệu và thực hiện các hoạt động liên quan đến dữ liệu như tìm kiếm và tổng hợp.

Client Node – Chuyển tiếp các yêu cầu cluster đến master node và các yêu cầu liên quan đến dữ liệu đến các data node.

Shard

Elasticsearch cung cấp khả năng chia nhỏ index thành nhiều phần được gọi là shard (phân đoạn). Mỗi phân đoạn tự nó là một “index” đầy đủ chức năng và độc lập có thể được lưu trữ trên bất kỳ node nào trong một cluster. Bằng cách phân phối các document trong một chỉ mục trên nhiều phân đoạn và phân phối các phân đoạn đó trên nhiều node, Elasticsearch có thể đảm bảo tính dự phòng, vừa bảo vệ khỏi lỗi phần cứng vừa tăng khả năng truy vấn khi các node được thêm vào một cluster.

Replica

Elasticsearch cho phép bạn tạo một hoặc nhiều bản sao của các phân đoạn chỉ mục gọi là “replica shard” (phân đoạn bản sao) hoặc chỉ là “replica” (bản sao). Về cơ bản, phân đoạn bản sao là bản sao của phân đoạn chính. Mỗi tài liệu trong một chỉ mục thuộc về một phân đoạn chính. Replica cung cấp các bản sao dự phòng của dữ liệu để bảo vệ khỏi lỗi phần cứng và tăng dung lượng để phục vụ các read request như tìm kiếm hoặc truy xuất tài liệu.

Elastic Stack (ELK)

Elasticsearch là gì
Elasticsearch là gì? Elastic Stack (ELK)

Elasticsearch là thành phần trung tâm của Elastic Stack, một tập hợp các công cụ mã nguồn mở để nhập, làm giàu, lưu trữ, phân tích và trực quan hóa dữ liệu. Nó thường được gọi là “ELK” stack sau các thành phần của nó là Elasticsearch, Logstash và Kibana và bây giờ cũng bao gồm cả Beats. Mặc dù là cốt lõi của nó là một công cụ tìm kiếm, nhưng người dùng đã bắt đầu sử dụng Elasticsearch cho log data và muốn có một cách dễ dàng để nhập và trực quan hóa dữ liệu đó.

Kibana

Kibana là một công cụ quản lý và trực quan hóa dữ liệu cho Elasticsearch và nó cung cấp biểu đồ theo thời gian thực, biểu đồ đường, biểu đồ hình tròn và bản đồ. Nó cho phép bạn trực quan hóa dữ liệu Elasticsearch của mình và điều hướng Elastic Stack. Bạn có thể chọn hình dạng cho dữ liệu của mình bằng cách bắt đầu bằng một câu hỏi để tìm hiểu xem hình ảnh tương tác sẽ dẫn bạn đến đâu.

Ví dụ: vì Kibana thường được sử dụng để phân tích log, nó cho phép bạn trả lời các câu hỏi về nguồn truy cập web của bạn đến từ đâu, URL phân phối của bạn, v.v. Nếu bạn không xây dựng ứng dụng của riêng mình trên Elasticsearch, thì Kibana là một cách tuyệt vời để tìm kiếm và trực quan hóa index của bạn với giao diện người dùng linh hoạt và mạnh mẽ.

Tuy nhiên, một nhược điểm lớn là mọi hình ảnh trực quan chỉ có thể hoạt động với một index/index pattern duy nhất. Vì vậy, nếu bạn có các index với dữ liệu hoàn toàn khác nhau, bạn sẽ phải tạo hình ảnh trực quan riêng biệt cho từng loại.

Đối với các trường hợp sử dụng nâng cao hơn, Knowi là một lựa chọn tốt. Nó cho phép bạn kết hợp dữ liệu Elasticsearch của mình trên nhiều index và trộn nó với các nguồn dữ liệu SQL/NoSQL /REST-API khác, sau đó tạo hình ảnh trực quan từ nó trong một giao diện người dùng thân thiện với doanh nghiệp.

Logstash

Logstash được sử dụng để tổng hợp và xử lý dữ liệu và gửi đến Elasticsearch. Nó là một đường ống xử lý dữ liệu phía máy chủ, mã nguồn mở và nhập dữ liệu từ vô số nguồn cùng lúc, biến đổi nó và sau đó gửi nó để thu thập. Nó cũng biến đổi và chuẩn bị dữ liệu từ bất kể định dạng nào bằng cách xác định các trường được đặt tên để xây dựng cấu trúc và biến đổi chúng để hội tụ về một định dạng chung.

Ví dụ: vì dữ liệu thường nằm rải rác trên các hệ thống khác nhau ở nhiều định dạng khác nhau, Logstash cho phép bạn kết nối các hệ thống khác nhau với nhau như máy chủ web, cơ sở dữ liệu, dịch vụ Amazon, v.v. và xuất bản dữ liệu đến bất cứ nơi nào cần đến theo cách truyền trực tuyến liên tục.

Beat

Beats là một tập hợp các agent vận chuyển dữ liệu nhẹ, có mục đích duy nhất là để gửi dữ liệu từ hàng trăm hoặc hàng nghìn máy móc và hệ thống tới Logstash hoặc Elasticsearch. Beats rất phù hợp để thu thập dữ liệu vì chúng có thể nằm trên máy chủ của bạn, với vùng chứa của bạn hoặc triển khai dưới dạng các chức năng sau đó tập trung dữ liệu trong Elasticsearch.

Ví dụ: Filebeat có thể nằm trên máy chủ của bạn, theo dõi các log file khi chúng đến, phân tích chúng và nhập vào Elasticsearch trong thời gian gần thực.

Xem thêm >> PWA là gì? Tại sao nó lại cực kì quan trọng trong E-commerce

Elasticsearch được sử dụng để làm gì?

Bây giờ chúng ta đã hiểu tổng quát về Elasticsearch là gì, các khái niệm logic đằng sau nó và kiến ​​trúc của nó, cũng đã hiểu rõ hơn về lý do tại sao và cách nó có thể được sử dụng trong nhiều trường hợp. Tiếp theo, chúng tôi sẽ xem xét một số trường hợp sử dụng chính của Elasticsearch và cung cấp ví dụ về cách các công ty đang sử dụng nó ngày nay.

Các trường hợp sử dụng chính

Tìm kiếm trên ứng dụng – Đối với các ứng dụng phụ thuộc nhiều vào nền tảng tìm kiếm để truy cập, truy xuất và báo cáo dữ liệu.

Tìm kiếm trên trang web – Các trang web lưu trữ nhiều nội dung sẽ thấy Elasticsearch là một công cụ rất hữu ích để tìm kiếm hiệu quả và chính xác. Không có gì ngạc nhiên khi Elasticsearch đang dần có được vị thế trong lĩnh vực tên miền tìm kiếm trang web.

Tìm kiếm trong doanh nghiệp – Elasticsearch cho phép các tìm kiếm trên toàn doanh nghiệp bao gồm tìm kiếm tài liệu, tìm kiếm sản phẩm thương mại điện tử, tìm kiếm blog, tìm kiếm người và bất kỳ hình thức tìm kiếm nào bạn có thể nghĩ đến. Trên thực tế, nó đã dần dần thâm nhập và thay thế các giải pháp tìm kiếm của hầu hết các trang web phổ biến mà chúng ta sử dụng hàng ngày. Từ góc độ doanh nghiệp cụ thể hơn, Elasticsearch thường là thành công lớn trong mạng nội bộ của công ty.

Ghi và phân tích log – Như chúng ta đã thảo luận, Elasticsearch thường được sử dụng để nhập và phân tích log data trong thời gian gần thực và theo cách có thể mở rộng. Nó cũng cung cấp thông tin chi tiết quan trọng về hoạt động về các log metric để thúc đẩy hành động.

Giám sát số liệu cơ sở hạ tầng và vùng chứa – Nhiều công ty sử dụng ELK stack để phân tích các số liệu khác nhau. Điều này có thể liên quan đến việc thu thập dữ liệu qua một số thông số hiệu suất khác nhau tùy theo trường hợp sử dụng.

Phân tích bảo mật – Một ứng dụng phân tích chính khác của Elasticsearch là phân tích bảo mật. Access log và các log tương tự liên quan đến bảo mật hệ thống có thể được phân tích bằng ELK stack, cung cấp bức tranh toàn cảnh về những gì đang diễn ra trên hệ thống của bạn trong thời gian thực.

Phân tích doanh nghiệp – Nhiều tính năng tích hợp sẵn có trong ELK Stack làm cho nó trở thành một lựa chọn tốt cho một công cụ phân tích doanh nghiệp. Tuy nhiên, có một đường cong học lĩnh hội dốc ((tiếng Anh: Learning curve) để triển khai sản phẩm này trong hầu hết các tổ chức. Điều này đặc biệt đúng trong trường hợp các công ty có nhiều nguồn dữ liệu ngoài Elasticsearch – vì Kibana chỉ hoạt động với dữ liệu Elasticsearch.

Một giải pháp thay thế tốt là Knowi, một nền tảng phân tích tích hợp tự nhiên với Elasticsearch và cho phép ngay cả những người dùng doanh nghiệp không chuyên về kỹ thuật có thể tạo hình ảnh trực quan và thực hiện phân tích trên dữ liệu Elasticsearch mà không cần biết trước hoặc có chuyên môn về ELK Stack.

Các công ty sử dụng Elasticsearch

Netflix

Netflix dựa vào ELK Stack trong nhiều use case khác nhau để theo dõi và phân tích các hoạt động dịch vụ khách hàng và nhật ký bảo mật. Ví dụ: Elasticsearch là công cụ cơ bản đằng sau hệ thống nhắn tin của họ. Ngoài ra, công ty đã chọn Elasticsearch vì tính năng tự động phân bổ và nhân rộng, lược đồ linh hoạt, mô hình tiện ích mở rộng đẹp mắt và hệ sinh thái với nhiều plugin.

Netflix đã cải thiện đều đặn việc sử dụng Elasticsearch của họ từ một vài triển khai riêng lẻ lên hơn một chục cluster bao gồm vài trăm node.

Ebay

Với vô số trường hợp sử dụng phân tích và tìm kiếm văn bản quan trọng trong doanh nghiệp sử dụng Elasticsearch làm xương sống, eBay đã tạo ra nền tảng ‘Elasticsearch-as-a-Service’ tùy chỉnh để cho phép dễ dàng cung cấp Elasticsearch cluster trên nền tảng đám mây dựa trên OpenStack nội bộ của họ.

Walmart

Walmart sử dụng Elastic Stack để tiết lộ tiềm năng tiềm ẩn của dữ liệu Walmart nhằm hiểu rõ hơn về các mô hình mua hàng của khách hàng, theo dõi số liệu hiệu suất của cửa hàng và phân tích kỳ nghỉ – tất cả đều trong thời gian thực. Nó cũng tận dụng các tính năng bảo mật của ELK để bảo mật với SSO, cảnh báo phát hiện bất thường và giám sát DevOps

Kết luận

Vậy Elasticsearch là gì? Trong bài đăng này, Hỏi đáp Công nghệ đã cố gắng trả lời câu hỏi đó thông qua lăng kính của việc hiểu nó là gì, nó hoạt động như thế nào, cách nó được sử dụng và tất nhiên đó vẫn chỉ là những tìm hiểu cơ bản về nó.

Nhưng dựa trên những gì chúng tôi đã đề cập, chúng tôi có thể tóm tắt ngắn gọn rằng Elasticsearch cốt lõi là một công cụ tìm kiếm có kiến ​​trúc và thành phần cơ bản làm cho nó nhanh và có thể mở rộng, nằm ở trung tâm của một hệ sinh thái gồm các công cụ bổ sung có thể được sử dụng cùng nhau trong nhiều trường hợp sử dụng bao gồm tìm kiếm, phân tích, xử lý và lưu trữ dữ liệu.

Và đối với các trường hợp sử dụng nâng cao hơn, trong đó bạn cần trộn và kết hợp dữ liệu Elasticsearch của mình trên nhiều index với các nguồn dữ liệu SQL/NoSQL/REST-API khác, hãy xem Knowi, một nền tảng phân tích tích hợp nguyên bản với Elasticsearch và có thể truy cập được cả về kỹ thuật và người dùng không có kỹ thuật. Nếu bạn hài lòng với bài viết, hãy chia sẻ nó cho bạn bè của mình nhé!

Các bài viết liên quan

1 thought on “Elasticsearch là gì? Cơ chế và các khái niệm quan trọng của Elasticsearch”

  1. Pingback: Spring MVC là gì? Khác biệt giữa Spring MVC với Spring Boot

Leave a Comment

Email của bạn sẽ không được hiển thị công khai.

Bài viết liên quan