[27]
Elasticsearch là cơng cụ tìm kiếm dựa trên nền tảng apache Lucene
• Cung cấp API cho việc lưu trữ và tìm kiếm dữ liệu một cách nhanh chóng.
• Xây dựng & phát triển bằng ngơn ngữ java, dựa trên Lucene.
• Được xây dựng để hoạt động như một server cloud theo cơ chế RESTful.
• Có thể tương tác và sử dụng bởi nhiều ngôn ngữ nên độ bảo mật khơng cao.
• Phù hợp với mục đích tìm kiếm và tổng hợp dữ liệu.
• Ưu điểm của Elasticsearch
Tốc độ nhanh, vượt trội trong tìm kiếm tồn văn, nền tảng tìm kiếm gần thời gian thực. Được phân tán tự nhiên: cho phép mở rộng ra hàng trăm, nghìn máy chủ và xử lý hàng petabyte dữ liệu. Tích hợp một số tính năng mạnh mẽ giúp lưu trữ và tìm kiếm dữ liệu hiệu quả hơn. Elastic stack đơn giản hóa việc nhập dữ liệu, trực quan hóa và report. Khả năng mở rộng và tính sẵn sàng cao.
• Nhược điểm của Elasticsearch
Elasticsearch chỉ mạnh ở phần tìm kiếm, những nhiệm vụ khác thường kém hơn các database khác. Khơng đảm bảo tính tồn vẹn dữ liệu trong các hoạt động write, update, delete. . . Khơng cung cấp tính năng cho bảo mật và phân quyền, nên về bảo mật kém hơn các database khác.
• So sánh MongoDb và Elactisearch
Sau khi xem xong ưu nhược điểm của Elasticsearch, sẽ thấy rằng Elasticsearch khá giống MongoDB, bởi vì cả Elasticsearch và MongoDB đều lưu dữ liệu NoSQL, document oriented, free schema, được xây dựng để đáp ứng cho các phản hồi real-
time, dễ mở rộng. . .
Vậy điểm khác biệt giữa Elasticsearch so với MongoDB là gì?
Khi nói tới Elasticsearch người ta sẽ nói tới đó là một search engine chứ không phải là một database như MongoDB.
Mặc dù Elasticsearch và MongoDB đều hỗ trợ cơ chế đánh index cho dữ liệu. Và khi các field của MongoDB được đánh index đầy đủ thì khả năng tìm kiếm của MongoDB cũng khơng kém cạnh so với Elasticsearch. Nhưng Elasticsearch vẫn có những điểm riêng biệt như:
Cung cấp Restful API cho phép xử lý các yêu cầu dưới dạng các request API Rest- ful. Tự động đánh index khi insert dữ liệu Việc đánh index ở mức độ chuyên sâu hơn so với MongoDB, trong khi MongoDB chỉ đánh index ở mức độ từ words thì Elasticsearch chia nhỏ hơn nên MongoDB sẽ khơng phù hợp cho trường hợp tìm kiếm mờ (ví dụ bạn có 1 đoạn text ‘tran van b’ khi đánh index trong MongoDB nó sẽ tách ra làm 3 từ là [‘tran’, ‘van’, ‘b’] nếu bạn search từ ‘a’ thì nó sẽ khơng tìm thấy)
Giải pháp:Giải pháp đó là sử dụng kết hợp cả MongoDB và Elasticsearch. Mon- goDB sẽ được dùng để làm database lưu dữ liệu còn Elasticsearch sẽ được đồng bộ dữ liệu với MongoDB. Khi thực hiện tìm kiếm ta sẽ tìm kiếm trên Elasticsearch.
2.2.2.5 Giới thiệu NodeJS