Elasticsearch là gì? Phân tích ưu nhược điểm của công cụ tìm kiếm Elasticsearch
Elasticsearch là gì?
Elasticsearch là một full text search engine hoạt động như 1 web server phát triển trên nền tảng Java, có khả năng tìm kiếm nhanh chóng (near real time) thông qua giao thức RESTful API.Ngoài khả năng full text search, công cụ này có khả năng phân tích, tổng hợp dữ liệu (data aggregation) và thống kê dữ liệu.Elasticsearch là 1 hệ thống phân tán và có khả năng mở rộng tuyệt vời (horizontal scalability). Gắn thêm node cho nó là nó tự động auto mở rộng cho ứng dụng của bạn.Như vậy, có thể hiểu Elasticsearch là:
- Một search engine.
- Được kế thừa từ Lucene Apache
- Công cụ này thực chất hoạt động như 1 web server, có khả năng tìm kiếm nhanh chóng (near real time) thông qua giao thức RESTful
- Có khả năng phân tích và thống kê dữ liệu
- Chạy trên server riêng và đồng thời giao tiếp thông qua RESTful do vậy nên nó không phụ thuộc vào client viết bằng gì hay hệ thống hiện tại của bạn viết bằng gì. Nên việc tích hợp nó vào hệ thống bạn là dễ dàng, bạn chỉ cần gửi request http lên là nó trả về kết quả.
- Là 1 hệ thống phân tán và có khả năng mở rộng tuyệt vời (horizontal scalability). Lắp thêm node cho nó là nó tự động auto mở rộng cho bạn.
- Là 1 open source được phát triển bằng Java
Cách thức hoạt động
Elasticsearch không mạnh trong các thao tác CRUD, nên thường sẽ dùng song song với 1 database chính như SQL, MySQL, MongoDB …Công cụ này lưu dữ liệu theo dạng document. Cơ bản một document trong Elasticsearch giống như 1 hàng trong CSDL quan hệ còn các field thì tương ứng với các cột.
Ưu điểm và nhược điểm
Ưu điểm
- Tìm kiếm dữ liệu rất nhanh chóng, mạnh mẽ dựa trên Apache Lucene (near-real time searching)
- Có khả năng phân tích dữ liệu (Analysis data)
- Khả năng mở rộng theo chiều ngang
- Hỗ trợ tìm kiếm mờ (fuzzy), tức là từ khóa tìm kiếm có thể bị sai lỗi chính tả hay không đúng cú pháp thì vẫn có khả năng trả về kết quả tốt.
- Hỗ trợ Structured Query DSL (Domain-Specific Language ), cung cấp việc đặc tả những câu truy vấn phức tạp một cách cụ thể và rõ ràng bằng JSON. Hỗ trợ nhiều Elasticsearch client như Java, PhP, Javascript, Ruby, .NET, Python…
Nhược điểm
- Elasticsearch được thiết kế cho mục đích search, do vậy với những nhiệm vụ khác ngoài search như CRUD thì elastic kém thế hơn so với những database khác như Mongodb, Mysql …. Do vậy người ta ít khi dùng elasticsearch làm database chính, mà thường kết hợp với 1 database khác.
- Trong elasticsearch không có khái niệm database transaction , tức là nó sẽ không đảm bảo được toàn vẹn dữ liệu trong các hoạt động Insert, Update, Delete. Tức khi chúng ta thực hiện thay đổi nhiều bản ghi nếu xảy ra lỗi thì sẽ làm cho logic của mình bị sai hay dẫn tới mất mát dữ liệu. Đây cũng là 1 phần khiến elasticsearch không nên là database chính.
- Không thích hợp với những hệ thống thường xuyên cập nhật dữ liệu. Sẽ rất tốn kém cho việc đánh Index dữ liệu
Hy vọng với bài viết trên đây, Tinasoft đã cùng bạn tìm hiểu thêm những kiến thức mới về Elasticsearch và Phân tích ưu nhược điểm của công cụ tìm kiếm Elasticsearch. Hãy theo dõi Tinasoft để cùng tìm hiểu thêm các kiến thức về Công nghệ thông tin và Giải pháp phần mềm mới nhé!