Elasticsearch là một 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 sử dụng trong các dự án Ứng dụng Trang đơn (SPA). Elasticsearch là một mã nguồn mở được phát triển bằng Java và được nhiều tổ chức lớn trên thế giới sử dụng. Nó được cấp phép theo giấy phép Apache phiên bản 2.0.
Trong hướng dẫn này, bạn sẽ tìm hiểu chi tiết những kiến thức cơ bản về Elasticsearch và các tính năng quan trọng của nó.
Hướng dẫn này được thiết kế cho các chuyên gia phần mềm muốn tìm hiểu kiến thức cơ bản về Elasticsearch và các khái niệm lập trình của nó trong các bước đơn giản và dễ dàng. Nó mô tả các thành phần của Elasticsearch với các ví dụ phù hợp.
Hướng dẫn này được thiết kế để cấu hình mô-đun HR của SAP một cách dễ dàng và có hệ thống. Được đóng gói với nhiều ảnh chụp màn hình, nó sẽ hữu ích cho các nhà tư vấn cũng như người dùng cuối.
Trước khi bắt đầu với hướng dẫn này, bạn nên có hiểu biết cơ bản về Java, JSON, công cụ tìm kiếm và công nghệ web. Tương tác với Elasticsearch thông qua API RESTful; do đó, bạn nên có kiến thức về API RESTful.
Nếu bạn chưa quen với bất kỳ khái niệm nào trong số này, chúng tôi khuyên bạn nên nhờ sự trợ giúp của các hướng dẫn dựa trên các chủ đề này trước khi bạn bắt đầu với Elasticsearch.
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à một 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 được 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 đế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áy chủ ảo và vật lý đơn có thể 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ý.
Cluster
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à các thuộc tính của chúng. Index 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 loại 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 cắt 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 |
Cluster | 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 |