13/09/2018, 08:51

Elasticsearch & Solr – Bạn nên lựa chọn Search Engine Nguồn Mở nào?

Hãy tưởng tượng tổ chức của bạn đang muốn thực hiện search engine đầu tiên, đang muốn dùng 1 search engine khác – như những gì mà users của Google Search Appliance (GSA) đang làm hoặc đang cố tiết kiệm tiền bằng cách chuyển sang 1 open source mới. Bạn – 1 developer tài năng, giỏi giang – được ...

elastic-seach-solr

Hãy tưởng tượng tổ chức của bạn đang muốn thực hiện search engine đầu tiên, đang muốn dùng 1 search engine khác – như những gì mà users của Google Search Appliance (GSA) đang làm hoặc đang cố tiết kiệm tiền bằng cách chuyển sang 1 open source mới. Bạn – 1 developer tài năng, giỏi giang – được triệu hồi để giải quyết vấn đề khó nhằn đó. Bạn cần rất nhiều thứ liên quan đến business, nhưng về cốt lõi, đó chính là vấn đề liên quan đến “big data và search”

Bạn cần phải extract rất nhiều nội dung từ nhiều nguồn dữ liệu, hiểu được insights của chúng, từ đó mới giúp doanh nghiệp của bạn phát triển và đạt được mục tiêu đề ra trong năm.

One Shot

Có 2 sự lựa chọn: Elasticsearch hoặc Solr. Cả 2 đều đứng vững vàng ở 2 vị trí đầu trong các search engines thương mại nguồn mở (theo DB-Engines)

Vậy nên chọn công cụ nào?

Tùy thuộc vào yêu cầu của bạn.

Bước đầu tiên, bạn cần hiểu rõ ứng dụng phải build là gì. Tiếp theo, xem thử công cụ search nào đang rào đón. Nếu bạn vẫn đang phân vân chọn giữa nguồn mở và các giải pháp mang tính thương mại.

Feature Rundown

Tuổi đời & mức độ trưởng thành

Trong trường hợp này, Solr có tuổi đời lâu hơn vì ra đời năm 2004, dưới bàn tay của Yonik Seely của CNET Networks, sau đó CNET Networks contribute cho Apache vào năm 2006. Đến năm 2007, Solr trở thành project hàng đầu năm 2007. Mặc khác, Elasticsearch chính thức xuất hiện năm 2010, dù trước đó đã được người sáng lập Shay Bannon khởi động từ 2001 dưới cái tên Compass. Shay Bannon đã tạo nên Elastic Stack product family – 1 kẻ đáng gờm về search và log analytics space.

Như vậy, về độ tuổi và mức độ trưởng thành, Solr có lợi thế hơn vì có mặt sớm hơn trên thị trường.

Cộng đồng và nguồn mở

Cả 2 đều có cộng đồng rất active. Nếu xem Github, bạn sẽ thấy đây là những dự án nguồn mở nổi tiếng với rất nhiều releases.

apache lucene solr github

elasticsearch github

Một chi tiết quan trọng chính là Elasticsearch lẫn Solr tuy đều được release theo bản quyền của Apache, đều là nguồn mở nhưng cách hoạt động lại có chút khác biệt. Với Elasticsearch, tuy mọi người có thể đề xuất contributions nhưng chỉ có nhân viên của Elastic (công ty đằng sau Elasticsearch và Elastic Stack) mới có thể chấp nhận những contributions đó.

Điều này tốt hay xấu, còn tùy thuộc vào cách nhìn nhận của bạn. Nếu có 1 tính năng bạn cần và bạn đóng góp nó cho cộng đồng với chất lượng đầy đủ, tính năng đó có thể được chấp nhận đưa vào Solr. Với Elsaticsearch, Elastic sẽ quyết định liệu 1 contribution có được chấp nhận hay không. Vì thế, trong Solr có nhiều lựa chọn tính năng hơn. Mặt khác, contributions cho Elasticsearch, sau khi trải qua nhiều cấp độ kiểm tra chất lượng, lại có độ nhất quán và chất lượng cao hơn.

Documentation

Cả Elasticsearch và Solr đều có những hướng dẫn tham khảo tài liệu hay. Elasticsearch có Github thì Solr sử dụng Atlassian Confuence.

Tham khảo 2 link sau:

  • Elasticsearch Reference Guide
  • Solr Reference Guide

Core technology

Về mặt kĩ thuật, cả Elasticsearch và Solr đều là các search engines khác nhau nhưng ẩn sâu bên trong, chúng đều dùng Lucene được build “trên vai của những kẻ khổng lồ”.

Lý do tôi gọi Lucene là “kẻ khổng lồ”? Vì Lucene chính là thư viện phần mềm thu hồi thông tin thực sự đứng đằng sau rất nhiều search engines. Nó cực kì nhanh, cực kì vững vàng. Vì vậy, Lucene là sự lựa chọn hoàn hảo cho vị trí “trái tim” của 1 search engine.

Bí mật đằng sau công nghệ tìm kiếm của Facebook. Đăng kí ngay!

Bí mật đằng sau công nghệ tìm kiếm của Facebook. Đăng kí ngay!

Java APIs và REST

Elasticsearch có REST API “Web 2.0” hơn nhưng Solr có Java API với SolrJ tốt hơn – hoặc SolrNet nếu bạn sử dụng các công nghệ của Microsoft. Elasticsearch có Nest và Elasticsearch.Net. REST API của Solr có thể kém linh hoạt hơn nhưng lại đáp ứng tuyệt hảo những gì bạn cần: indexing và querying. Elasticsearch gọi JSON, nên nếu bạn dùng JSON thì đây Elasticsearch là 1 lựa chọn tốt. Solr cũng hỗ trợ JSON tốt nhưng đó là thời gian gần đây thôi, lúc ban đầu Solr nhắm đến XML.

Content processing

content processing

Vì cả Elasticsearch và Solr đều expose 1 API, nên bạn dễ index nội dung từ ứng dụng tùy chỉnh của mình hoặc từ các ứng dụng đang tồn tại và có thể configure được. Ví dụ, framework processing content Aspire của chúng tôi có thể kết nối đến nhiều nguồn dữ liệu và post lên cả Elasticsearch hoặc Solr.

Solr cũng có 1 tính năng để extract text từ các files binary sử dụng Apcache Tika. Nhờ đó bạn có thể tải lên 1 PDF thông qua ExtractRequestHandler và Solr sẽ làm phần việc còn lại.

Mặc khác, Elasticsearch lại hoạt động tốt với Logstash – Logstash có thể xử lý dữ liệu từ nguồn bất kì và index dữ liệu đó.

Scalability

Scaling là yếu tố chính mà bạn cần cân nhắc. Trong tình huống này, Elasticsearch đang giành phần thắng vì Solr vẫn ràng buộc với Master-Slave. Tuy nhiên, SolrCloud gần đây đã bắt đầu nhập cuộc. Với sự hỗ trợ của Zookeeper, bạn có thể scale 1 cụm Solr dễ dàng hơn, nhanh hơn so với các phiên bản cũ của Solr với Master-Slave. Tuy vẫn cần cải thiện nhiều hơn nhưng trong tương lai, bạn có thể “nhồi nhét” và tìm kiếm các datasets trong Solr.

Hỗ trợ vendor

Rất nhiều công ty xem xét yếu tố này khi quyết định lựa chọn product nào phù hợp nhất. Ví dụ, Cloudera chọn Solr để tích hợp vào nguồn mở CDH (Cloudera Distribution Including Hadoop). Ngoài ra, rất nhiều vendors khác đã chọn Elasticsearch cho các giải pháp riêng của họ.

Tầm nhìn & hệ sinh thái

Solr thiên về text search. Elasticsearch hướng đến log analytics bằng cách tạo ra Elastic stack – đại diện cho Elasticsearch, Logstash,  Kibana và Beats. Cả 2 đều có tầm nhìn rõ ràng và đều đang tiến bước mạnh mẽ theo định hướng của mình.

Đừng quên, cả 2 đều đang là nền tảng của rất nhiều platforms về search và big data hàng đầu như Elasticsearch là 1 phần trong Azure Search của Microsoft còn Solr đã được tích hợp vào Cloudera Search.

Hiệu suất

Theo kinh nghiệm mà tôi nghe được từ rất nhiều lập trình viên, cả 2 engiesn đều hoạt động ổn định. Vì vậy, trong phần lớn các trường hợp sử dụng, dù là ứng dụng search nội bộ hay bên ngoài, thì vấn đề hiệu suất/ công năng cũng không quá quan trọng nếu lập trình viên design và configure chúng 1 cách phù hợp.

Quản trị web

Solr có tích hợp web administration còn Elasticsearch có rất nhiều plugins tính phí liên quan đến bảo mật, alerting và monitoring. Danh sách này sẽ cho bạn thấy toàn bộ product family của Elastic.

Bí mật đằng sau công nghệ tìm kiếm của Facebook. Đăng kí ngay!

Bí mật đằng sau công nghệ tìm kiếm của Facebook. Đăng kí ngay!

Visualization

Có rất nhiều cách để visualize dữ liệu trong Elasticsearch và Solr – bạn có thể xây dựng visualization dashboard hoặc sử dụng các tính năng visualization chuẩn của search engine. Nhưng có 1 điểm khác biệt lưu ý.

Solr tập trung chủ yếu vào text search. Solr dần trở thành chuẩn bị cho các ứng dụng search. Nhưng Elasticsearch lại đi theo định hướng khác, không chỉ search mà còn giải quyết vấn đề log analytics và visualization với Elastic Stack.

Dưới đây là 1 số visualizations bạn có thể làm với Kibana 5.

kibana 5 dashboard

Nhìn chung, cả Elasticsearch và Solr đều là những lựa chọn nguồn mở tuyệt vời, hỗ trợ bạn lấy được nhiều thứ từ data nhất có thể. Tùy thuộc vào yêu cầu, kinh phí, thời gian và mức độ phức tạp của dự án để bạn lựa chọn công cụ nào phù hợp hơn.

0