ELASTICSEARCH 1. CÁC KHÁI NIỆM CƠ BẢN
Elasticsearch là một công cụ tìm kiếm dựa trên Apache Lucene, phát triển bởi Shay Banon và phát hành vào năm 2010. Elasticsearch cung cấp một bộ máy phân tích và tìm kiếm full-text theo thời gian thực dạng phân tán, làm việc thông qua RESTful API, lưu trữ dữ liệu và đưa ra kết quả ở dạng JSON.
Elasticsearch được xây dựng bằng Java và phát hành dưới dạng mã nguồn mở theo giấy phép Apache 2.0. Vì vậy nên Elasticsearch có thể chạy trên nhiều nền tảng khác nhau, cho phép người dùng thao tác rất nhanh với lượng lớn dữ liệu, được nhiều tổ chức lớn như Wikipedia, StackOverflow, GitHub,… sử dụng.
Elasticsearch có khả năng mở rộng lên tới hàng petabytes dữ liệu cả có cấu trúc lẫn không có cấu trúc.
- Elasticsearch có thể được sử dụng thay cho các document-oriented database như MongoDB hay RavenDB.
- Elasticsearch tăng cường hiệu suất tìm kiếm bằng cách denormalization (Xem thêm về normalization và denormalization tại: https://code4shares.wordpress.com/2016/04/23/thiet-ke-csdl-va-denormalizing-de-toi-uu-hieu-nang/)
CÁC KHÁI NIỆM CHÍNH
Elasticsearch server được tổ chức theo kiến trúc Clustering (Xem thêm về clustering tại:
- Cluster: là một tập các nodes (hay servers), chứa toàn bộ dữ liệu, đồng thời cung cấp khả năng đánh index và tìm kiếm trên toàn bộ các nodes thuộc cluster đó. Mỗi cluster được định danh bởi một tên duy nhất, mặc định là “elasticsearch”.
- Node: là một single server, một phần của cluster, tham gia đánh index và tìm kiếm.
- Index: là tập các documents có một số đặc tính tương đồng. Ví dụ như ta có thể tạo index cho dữ liệu khách hàng, index khác cho danh mục sản phẩm, và cả một index nữa cho dữ liệu về hóa đơn. Mỗi index được định danh bằng một tên riêng biệt chỉ gồm các ký tự thường (lowercase)
- Type/Mapping (Trước phiên bản 6.0.0): trước phiên bản 6.0.0 thì trong 1 index có thể gồm nhiều type để các kiểu document khác nhau (ví dụ: type cho users, type cho posts,...), tuy nhiên kể từ phiên bản 6.0.0 thì không thể tạo nhiều type trong 1 index được nữa và vì thế index đóng vai trò như trên (Xem thêm về lý do type/mapping bị loại bỏ tại: https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html)
- Document: là thành phần cơ bản chứa thông tin trong Elasticsearch. Ví dụ 1 document chứa thông tin của 1 khách hàng riêng biệt, 1 document khác lưu trữ thông tin của 1 sản phẩm,...). Một document được biểu diễn dưới dạng JSON – một định dạng dùng để trao đổi dữ liệu phổ biến trên Internet.
- Shard: Nếu một index chứa quá nhiều dữ liệu thì có thể phần cứng sẽ không thể đáp ứng được việc phân tích và tìm kiếm. Vì vậy Elasticsearch cung cấp cơ chế cho phép chia 1 index thành nhiều phần nhỏ gọi là shards. Mỗi shard là một index với đầy đủ chức năng và độc lập, vì vậy nên có thể được đặt ở các nodes khác nhau. Shard có thể mở rộng khả năng lưu trữ và cho phép làm việc song song đồng thời trên nhiều shards nên sẽ giúp tăng hiệu năng.
- Replica: Elasticsearch tạo nhiều bản sao cho mỗi shard, gọi là các replicas, tăng khả năng chịu lỗi và cho phép làm việc trên nhiều replicas một lúc.
(còn tiếp)
elasticsearch
,vtcc_intern_9
,công nghệ thông tin
ES có phù hợp với dữ liệu thường xuyên phải update không?
Người ẩn danh
ES có phù hợp với dữ liệu thường xuyên phải update không?
Người ẩn danh
Bạn có thể đưa ra 1 example sử dụng phù hợp với ES không?
Nguyễn Trung Kiên
Ở phần sau, mọi người chờ đợi những ưu điểm của ES so với các document-oriented database khác? good job
Người ẩn danh