nhu thep nguyen

Đôi điều cơ bản về Elasticsearch

Elasticsearch là gì?

Elasticsearch là một công cụ tìm kiếm dựa trên phần mềm Lucene. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON. Elasticsearch được phát triển bằng Java và được phát hành dạng nguồn mở theo giấy phép Apache. Elasticsearch là một công cụ tìm kiếm phổ biến nhất, theo sau là Apache Solr, cũng dựa trên Lucene. (Theo định nghĩa trên Wikipedia)

Shay Banon tạo ra phần mềm tiền thân của Elasticsearch, được gọi là Compass, trong năm 2004. Trong khi suy nghĩ về phiên bản thứ ba của Compass, ông nhận ra rằng cần thiết phải viết lại phần lớn Compass để "tạo ra một giải pháp tìm kiếm có khả năng mở rộng". Vì vậy, ông đã tạo ra "một giải pháp được xây dựng trên nguyên lý phân tán" và sử dụng các giao thức phổ biến là JSON và HTTP, thích hợp cho các ngôn ngữ lập trình khác, cũng như Java. Shay Banon phát hành phiên bản đầu tiên của Elasticsearch vào tháng hai, năm 2010.

Tóm lại :

  • Elasticsearch là một search engine.
  • Elasticsearch được kế thừa từ Lucene Apache
  • Elasticsearch thực chất hoặt động như 1 web server, có khả năng tìm kiếm nhanh chóng (near realtime) thông qua giao thức RESTful
  • Elasticsearch có khả năng phân tích và thống kê dữ liệu
  • Elasticsearch 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ì. Bạn chỉ cần gửi request http lên là nó trả về kết quả.
  • Elasticsearch 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.
  • Elasticsearch là 1 open source được phát triển bằng Java

Ưu nhược điểm của Elasticsearch

Ưu điểm Elasticsearch

  • Tìm kiếm dữ liệu rất nhanh chóng, mạnh mẽ dựa trên Apache Lucene (near-realtime 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 elasticsearch 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 Elasticsearc 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 nó 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. Đâ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.

Một số tổ chức cung cấp Elasticsearch như một dịch vụ quản lý, bao gồm cả Amazon Web Services Elasticsearch Service, Bonsai Elastic Cloud, Qbox và Searchly. Các dịch vụ này cung cấp khả năng lưu trữ, triển khai, sao lưu và hỗ trợ khác như một gói, giảm các kỹ năng và thời gian cần thiết để thực hiện và quản lý Elasticsearch. Đa số dịch vụ quản lý cũng bao gồm cả phần mềm Kibana để quản lý giao diện dạng biểu đồ.