Elasticsearch là gì?

Elasticsearch là công cụ tìm kiếm và lưu trữ toàn văn bản, có khả năng mở rộng cao. Nó cho phép chúng ta lưu trữ, tìm kiếm và phân tích với dữ liệu rất lớn, cho kết quả gần với thời gian thực.

1. Elasticsearch là gì?

Elasticsearch là công cụ tìm kiếm và lưu trữ toàn văn bản, có khả năng mở rộng cao. Nó cho phép chúng ta lưu trữ, tìm kiếm và phân tích với dữ liệu rất lớn, cho kết quả gần với thời gian thực. Elastic thường được sử dụng như một công cụ hỗ trợ cho những app có chức năng search hoặc yêu cầu phức tạp.

Dưới đây là một vài ứng dụng có thể sử dụng elasticsearch

  • Khi bạn chạy một web bán hàng online, bạn cho phép khách hàng có thể tìm kiếm tìm kiếm sản phẩm của bạn. Trong trường hợp này bạn có thể sử dụng elasticsearch để lưu trữ toàn bộ danh mục sản phẩm, cung cấp các đề xuất tìm kiếm. Lưu trữ các khoảng không quảng cáo và làm đầy chúng khi cần thiết.

  • Bạn muốn có một tập log hoặc có tập dữ liệu trao đổi và bạn muốn phân tích chúng thành các data dưới dạng xu hướng, thống kê, tóm tắt, hoặc không phải các loại trên. Trong trường hợp này bạn có thể sử dụng Logstash (một phần của Elasticsearch) để thu thập, tổng hợp và phân tích cú pháp dữ liệu của bạn, sau đó chuyển dữ liệu từ Logstash vào elasticsearch. Lúc này, bạn có thể search hoặc tổng hợp thông tin theo cách mình muốn.

  • Bạn có nhu cầu phân tích, hoặc kinh doanh mà muốn điều tra, phân tích, hoặc cái nhìn trực quan hoặc đặt câu hỏi quảng cáo cho một dữ liệu rất lớn. Trường hợp này , bạn cần sử dụng Elasticsearch để lưu trữ data của bạn và sau đó sử dụng Kibana (một phần của Elasticsearch/ Logstash/Kibana stack) để xây dựng bảng điều tra , điều đó giúp bạn có thể trực quan hóa data của mình, đây cũng là điều rất quan trọng. Thêm vào đó, bạn có thể sử dụng chức năng tổng hợp của Elasticsearch để xây dựng nhũng câu truy vấn thông minh phù hợp với yêu cầu bài toán.

2. Khái niệm cơ bản của Elasticsearch

Near Realtime (NRT)

Elasticsearch là một trong những nền tảng Near Realtime có nghĩa là thời gian thực hiện của thuật toán elasticsearch có độ trễ rất nhỏ, rất gần với thời gian thực. Độ trễ của bài toán thường chỉ 1 giây từ việc lập chỉ mục đến thời gian đưa ra kết quả search.

Cluster

Cluster-cụm là một tập hợp một hay nhiều node-nút (hay server) cùng nắm giữ toàn bộ data, cung cấp khả năng lập chỉ mục và tìm kiếm liên kết giữa các node với nhau. mỗi cluster được định danh bằng một tên duy nhất, ví dụ tên của cụm là “elasticsearch”, mỗi node-nút là một phần của cụm khi được thiết lập được nối với cụm bằng tên “elasticsearch”.

Node

Node- nút là một server đơn lẻ, là một phần của cluster, lưu trữ data của bạn, tham gia vào chức năng lập chỉ mục và tìm kiếm. Cũng như cluster, node cũng được định danh, mỗi nút được biết đến với một tên thường được đặt mặc định ngẫu nhiên bởi Universally Unique IDentifier (UUID), việc đặt tên được tiến hành khi thiết lập, bạn cũng có thể tự định danh cho nút của mình. Tên của nút rất quan trọng trong việc xác định nút này thuộc cụm nào trong elasticsearch của bạn

Index

Index- chỉ mục là một tập hợp của tài liệu mà chứa những đặc điểm tương tự. Ví dụ, bạn có chỉ mục về dữ liệu khách hàng, một chỉ mục khác về danh mục sản phẩm, và những chỉ mục khác cho những data khác. Chỉ mục cũng được định danh bằng tên, tên này được sử dụng khi thực hiện các hoạt động như lập chỉ mục, tìm kiếm, cập nhật hoặc xóa các tài liệu trong đó.

Type

Type-loại được sử dụng làm danh mục của chỉ mục cho phép bạn lưu trữ các loại dữ liệu khác nhau trong cùng một chỉ mục.

Document

Document- tài liệu là đơn vị cơ bản của thông tin, được đánh chỉ mục. Với một chỉ mục hoặc một loại, bạn có thể lưu bao nhiêu tài liệu tùy thích. Tuy nhiên tài liệu cần phải đánh chỉ mục.

Shards & Replicas

Shard – phân mảnh: chỉ mục có thể lưu trữ một lượng lớn dữ liệu, có thể vượt qua giới hạn phần cứng của nút. Ví dụ, một chỉ mục chứa 1 tỷ tài liệu chiếm 1TB dung lượng, có thể dung lượng của ổ đĩa không đủ chứa có thể làm chậm quá trình trả lời các request từ những nút đơn lẻ. Để giải quyết vấn đề này, Elasticsearch cung cấp khả năng chia nhỏ chỉ mục của bạn thành nhiều phần nhỏ hơn gọi là shard-phân mảnh. Khi bạn tạo chỉ mục, bạn có thể chỉ cần xác định số lượng phân đoạn mà bạn muốn.

Shard rất quan trọng vì hai lý do:

  • Cho phép bạn phân mảnh theo chiều ngang mở rộng khối lượng bản ghi của bạn

  • Cho phép bạn phân phối và hoạt động song song trên các phân đoạn, nhờ đó tăng hiệu suất làm việc.

Replica-bản sao: trong môi trường mạng hay đám mây, có thể xảy ra lỗi bất cứ lúc nào như một nút bị ẩn hoặc biến mất, sử dụng bản sao được khuyến khích để có cơ chế dự phòng trong những trường hợp đó. Để làm được điều đó, Elasticsearch đã hỗ trợ, cho phép bạn tạo nhiều bản sao của một phân đoạn chỉ mục các bản sao đó được gọi là replica shards hay replicas for short.

Replica quan trọng vì hai lý do:

  • Cung cấp khả năng sẵn sàng cao trong trường hợp một nút biến mất hoặc ẩn đi (một nút hay nhiều nút không thành công). Cũng vì lý do này, bản sao không bao giờ được phân bố trên cũng một nút với phân đoạn gốc mà nó chỉ được sao chép từ đó.

  • Cho phép bạn mở rộng khối lượng tìm kiếm vì có thể thực hiện trên tất cả các bản sao song song

3. Kết luận

Tóm lại, mỗi chỉ mục có thể được chia thành nhiều mảnh. Mỗi chỉ mục cũng có thể không có bản sao hoặc được nhân bản nhiều lần. Sau khi được nhân bản, mỗi chỉ mục sẽ có các phân đoạn chính và các bản sao có thể được xác định trên mỗi chỉ mục khi thiết lập. Sau khi chỉ mục được tạo, bạn có thể thay đổi số bản sao, nhưng ko thể thay đổi số phân đoạn

Bài viết trên đưa ra cho bạn cái nhìn tổng quan về Elasticsearch, Elasticsearch là gì? Cấu trúc như nào? Những khái niệm cơ bản của Elasticsearch.

Theo kipalog.com

Japan IT Works