Elasticsearch — Awesome search and index engine

Tuần rồi trong project của mình đang thực hiện ở công ty có sử dụng đến Elasticsearch. Với suy nghĩ là tìm hiểu để sau này xài luôn nên mình đã tìm hiểu nó và thấy nó hay, thú vị. Tuy không phải là một search and index engine mạnh mẽ nhất. Nhưng nó thật sự đơn giản, dễ sử dụng. Điều đó là mọt trong những điều làm mình thấy nó đáng giá để sử dụng cho các hệ thống sau này mà mình làm.

Elasticsearch — Why big system need you by Trần Kim Hiếu

Searching, nhu cầu rất cần thiết của chúng ta

Để tiếp cận với một số lượng lớn thông tin thì chúng ta cần nhưu cầu search rất nhiều. Ví dụ khi bạn cần mua một món đồ. Bạn vào Vật Giá và phải dùng chức năng search để tìm ra món đồ đó. Nếu như chức năng đó không có hoặc rất tệ. Thì bạn sẽ khá vất vả để tìm ra món đồ mình cần. Đó củng chính là lý do tại sao hệ thống 5giây ra mắt five.vn khi họ lớn lên.

Trong nhưu cầu search, chúng ta còn có các nhóm nhưu cầu như

  • Search by term
  • Search by ID
  • Search by attributes
  • Highlight search result
  • Suggestion
  • Faceing, gom nhóm và sàng lọc dữ liệu.

Mặc định thì các hệ thống không hổ trợ những chuyện đó. Hoặc có thì thường rất tệ. Điều này đặt ra nhưu cầu làm sao phải có một hệ thống hổ trợ Index và Search riêng biệt, mạnh mẽ, hổ trợ các như cầu trên và phải đạt được một yêu cầu quan trọng là

Search need speed, speed is useless without relevance

Với cái như cầu đó thì rất nhiều hệ thống search ra đời. Ví dụ như

Apache Sorl — http://lucene.apache.org/solr

Sphinx — http://sphinxsearch.com

Elasticsearch — http://elasticsearch.org

Lucence — lucene.apache.org

Có rất nhiều bài so sánh về các hệ thống này ở đây. Các bạn có thể xem và mình sẽ nêu ra lý do tại sao mình chọn Elasticsearch

http://solr-vs-elasticsearch.com

http://stackoverflow.com/questions/2271600/elasticsearch-sphinx-lucene-solr-xapian-which-fits-for-which-usage

Use Kibana to monitor Elasticsearch

Elasticsearch, why I think you are a superhero

Dưới đây mình sẽ chỉ ra những điều, mà theo mình tại sao nó làm nên sự thành công của Elasticsearch. Mình thích nó vì những điều này.

Plug and play

Cài đặt một Elasticsearch server cực kỳ đơn giản. Các bạn chỉ cần

cd ~ sudo apt-get update sudo apt-get install openjdk-7-jre-headless -y  
### Check http://www.elasticsearch.org/download/ for latest version of ElasticSearch and replace wget link below
# NEW WAY / EASY WAY
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.deb
sudo dpkg -i elasticsearch-0.90.5.deb
sudo service elasticsearch start

Hoặc trên MacOS X

brew install elasticsearch  
# When install process is done
elasticsearch
# or
elasticsearch -f

So với các search and index engine khác thì đây là điều mà khá nhiều người dùng mong đợi, trong đó có mình. Không cần phải cấu hình quá nhiều mà có thể xài được ngay.

RESTful

Why RESTful quan trọng. Vì đó là một cách truyền dữ liệu cực kỳ đơn giản, gọn nhẹ. Các hệ thống không cần phải móc vào nhau vẫn có thể xài được. Điều này sẽ giúp bạn không tốn quá nhiều thời gian để tích hợp nếu như hệ thống (framework) của bạn không hổ trợ Elasticsearch Addon.

A simple ES diagram

Sharding & Replication

Sharding

Ví dụ như bạn có một hệ thống lớn phục vụ cho 2 ngôn ngữ khác nhau là Tiếng Anh và Tiếng Việt. Bạn có nhưu cầu muốn chia thông tin trên 2 máy chủ khác nhau, sau đó người dùng search tiếng Anh sẽ lấy kết quả từ node Tiếng Anh và search bằng tiếng Việt sẽ lấy từ node Tiếng Việt.

Sharding được sinh ra để làm điều đó. Nó giúp

  • Chia dữ liệu logic ra các máy chủ vật lý khác nhau
  • Điều hướng dữ liệu

Replication

Sau 5 năm hoạt động, hệ thống của bạn quá lớn và một search server không chịu nỗi. thì Replication hổ trợ bạn điều này. Replication nhân bản dữ liệu dữ các nhóm máy chủ với nhau.

  • Tăng sức chịu đựng các truy xuất cùng lúc.
  • Giảm rủi ro khi các node khác bị sự cố.

Sharding and Replication

Ngoài hai tính năng này ra thì mình nghĩ là Elasticsearch có khá nhiều điều thú vị mà các bạn có thể tham khảo ở đây. http://www.elasticsearch.org/overview/

Kết luận

Để hiểu sâu hơn về Elasticsearch. Các bạn có thể xem slide đính kèm của mình. Nó được mình tổng hợp lại từ các slide khác.

Bài viết của mình nhằm mục đích nêu lên những điều mà mình thích ở Elasticsearch,Nếu có gì chưa hiểu hay muốn thảo luận về Elasticsearch các bạn cứ comment ở dưới nhen.