Elasticsearch - Các khái niệm cơ bản
Elasticsearch là một máy chủ tìm kiếm dựa trên Apache Lucene. Nó được phát triển bởi Shay Banon và xuất bản vào năm 2010. Hiện nó được duy trì bởi Elasticsearch BV. Phiên bản mới nhất của nó là 7.0.0.
Elasticsearch là công cụ phân tích và tìm kiếm toàn văn mã nguồn mở và được phân phối theo thời gian thực. Nó có thể truy cập từ giao diện dịch vụ web RESTful và sử dụng lược đồ ít tài liệu JSON (JavaScript Object Notation) để lưu trữ dữ liệu. Nó được xây dựng trên ngôn ngữ lập trình Java và do đó Elasticsearch có thể chạy trên các nền tảng khác nhau. Nó cho phép người dùng khám phá một lượng lớn dữ liệu với tốc độ rất cao.
Các tính năng chung
Các tính năng chung của Elasticsearch như sau:
Elasticsearch có thể mở rộng lên đến petabyte dữ liệu có cấu trúc và phi cấu trúc.
Elasticsearch có thể được sử dụng để thay thế các kho tài liệu như MongoDB và RavenDB.
Elasticsearch sử dụng chức năng không chuẩn hóa để cải thiện hiệu suất tìm kiếm.
Elasticsearch là một trong những công cụ tìm kiếm doanh nghiệp phổ biến và hiện đang được sử dụng bởi nhiều tổ chức lớn như Wikipedia, The Guardian, StackOverflow, GitHub, v.v.
Elasticsearch là một mã nguồn mở và có sẵn theo giấy phép Apache phiên bản 2.0.
Ý chính
Các khái niệm chính của Elasticsearch như sau:
Nút
Nó đề cập đến một phiên bản đang chạy của Elasticsearch. Một máy chủ vật lý và ảo chứa nhiều nút tùy thuộc vào khả năng của tài nguyên vật lý của chúng như RAM, khả năng lưu trữ và xử lý.
Cụm
Nó là một tập hợp của một hoặc nhiều nút. Cluster cung cấp khả năng lập chỉ mục và tìm kiếm tập thể trên tất cả các nút cho toàn bộ dữ liệu.
Mục lục
Nó là một tập hợp các loại tài liệu khác nhau và thuộc tính của chúng. Chỉ mục cũng sử dụng khái niệm phân đoạn để cải thiện hiệu suất. Ví dụ, một tập hợp tài liệu chứa dữ liệu của một ứng dụng mạng xã hội.
Tài liệu
Nó là một tập hợp các trường theo một cách cụ thể được xác định ở định dạng JSON. Mỗi tài liệu thuộc về một loại và nằm bên trong một chỉ mục. Mọi tài liệu được liên kết với một số nhận dạng duy nhất được gọi là UID.
Mảnh vỡ
Chỉ mục được chia nhỏ theo chiều ngang thành các phân đoạn. Điều này có nghĩa là mỗi phân đoạn chứa tất cả các thuộc tính của tài liệu nhưng chứa ít đối tượng JSON hơn chỉ mục. Sự phân tách theo chiều ngang làm cho phân đoạn trở thành một nút độc lập, có thể được lưu trữ trong bất kỳ nút nào. Phân đoạn chính là phần nằm ngang ban đầu của một chỉ mục và sau đó các phân đoạn chính này được sao chép thành các phân đoạn sao chép.
Bản sao
Elasticsearch cho phép người dùng tạo bản sao các chỉ mục và phân đoạn của họ. Việc sao chép không chỉ giúp tăng tính khả dụng của dữ liệu trong trường hợp bị lỗi mà còn cải thiện hiệu suất tìm kiếm bằng cách thực hiện thao tác tìm kiếm song song trong các bản sao này.
Ưu điểm
Elasticsearch được phát triển trên Java, giúp nó tương thích trên hầu hết mọi nền tảng.
Elasticsearch là thời gian thực, nói cách khác là sau một giây, tài liệu được thêm vào có thể tìm kiếm được trong công cụ này
Elasticsearch được phân phối, giúp dễ dàng mở rộng quy mô và tích hợp trong bất kỳ tổ chức lớn nào.
Dễ dàng tạo các bản sao lưu đầy đủ bằng cách sử dụng khái niệm cổng, có trong Elasticsearch.
Việc xử lý nhiều hợp đồng thuê nhà rất dễ dàng trong Elasticsearch khi so sánh với Apache Solr.
Elasticsearch sử dụng các đối tượng JSON làm phản hồi, điều này giúp bạn có thể gọi máy chủ Elasticsearch với một số lượng lớn các ngôn ngữ lập trình khác nhau.
Elasticsearch hỗ trợ hầu hết mọi loại tài liệu ngoại trừ những tài liệu không hỗ trợ kết xuất văn bản.
Nhược điểm
Elasticsearch không có hỗ trợ đa ngôn ngữ về mặt xử lý dữ liệu yêu cầu và phản hồi (chỉ có thể trong JSON) không giống như trong Apache Solr, nơi có thể ở các định dạng CSV, XML và JSON.
Đôi khi, Elasticsearch gặp sự cố Chia rẽ tình huống não.
So sánh giữa Elasticsearch và RDBMS
Trong Elasticsearch, chỉ mục tương tự như các bảng trong RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ). Mỗi bảng là một tập hợp các hàng giống như mọi chỉ mục là một tập hợp các tài liệu trong Elasticsearch.
Bảng sau đây đưa ra sự so sánh trực tiếp giữa các thuật ngữ này
Elasticsearch | RDBMS |
---|---|
Cụm | Cơ sở dữ liệu |
Mảnh vỡ | Mảnh vỡ |
Mục lục | Bàn |
Cánh đồng | Cột |
Tài liệu | Hàng |