Elastic là gì? Tôi có nên áp dụng vào dự án?
Nhiều bạn thắc mắc Elasticsearch là gì? Tại sao tôi phải sử dụng, những lợi ích mà nó mạng lại, và cách hoạt động như thế nào?
Trong phần này mình sẽ giải quyết tất cả những câu hỏi trên một cách chi tiết và cặn kẽ, nhằm giúp bạn có 1 tài liệu đầy đủ và không phải tốn thời gian tìm kiếm.
Bài viết khá dài, nhưng mình hứa với các bạn là sẽ rất dễ hiểu. Giống như bạn đọc 1 quyển sách: từ từ thưởng thức nó, và bị cuốn vào câu chuyện.
Các bạn có thể sử dụng chức năng clips để lưu lại và xem dần.
Nội dung:
- Hiểu về search engines(công cụ tìm kiếm) và những vấn đề chúng giải quyết.
- Làm thế nào Elastícearch phù hợp với phạm vi của các công cụ tìm kiếm.
- Các kịch bản điển hình cho Elasticsearch.
- Các tính năng Elasticsearch cung cấp.
- Cài đặt Elasticsearch.
Trong thời đại này, chúng ta sử dụng chức năng tìm kiếm ở mọi nơi. Và điều đó thật tuyệt, bởi vì tìm kiếm giúp bạn hoàn thành nhiệm vụ nhanh chóng và dễ dàng.
Cho dù bạn mua một thứ gì đó từ cửa hàng trực tuyến hoặc truy cập một blog, bạn mong muốn có 1 thanh tìm kiếm (search box) để giúp bạn tìm thấy những gì bạn đang tìm kiếm mà không cần phải xem hết toàn bộ trang web.
Và đối với tôi có thể khác 1 chút, khi tôi thức dậy vào sáng sớm, và tôi ước tôi có thể vào bếp và gõ chứ "dĩa" vào thanh tìm kiếm (search box) và sau đó cái "dĩa" mà tôi yêu thích được tô sáng.
Chúng ta cũng mong những thanh tìm kiếm này trở nên thông minh.
Tôi không muốn phải gõ hết toàn bộ chữ "dĩa", tôi mong muốn thanh tìm kiếm đưa ra những gợi ý, và không muốn những kết quả và gợi ý xuất hiện theo thứ tự ngẫu nhiên.
Tôi muốn thanh tìm kiếm này đưa ra những kết quả phù hợp nhất ở vị trí đầu tiên - để gợi ý những gì tôi mong muốn, nếu điều đó có thể.
Ví dụ: Nếu tôi muốn tìm kiếm "laptop" từ một cửa hàng online, nhưng tôi phải duyệt qua những "phụ kiện laptop" trước khi tôi tìm thấy sản phẩm "laptop", tôi có thể đi 1 trang khác sau kết quả tìm kiếm đầu tiên.
Gợi ý và kết quả liên quan là nhu cầu cần thiết, vì chúng ta không những bị vấn đề về thứ tự hiển thị mà bên cạnh đó có quá nhiều kết quả để chúng ta lựa chọn.
Ví dụ như bạn tôi, nhờ tôi giúp cô ấy mua laptop mới. Tôi tìm kiếm với từ khoá "laptop tốt nhất cho bạn của tôi" trên thanh tìm kiếm của cửa hàng online, nhưng kết quả hiển thị ra hàng ngàn sản phẩm.
Từ khoá tìm kiếm tốt chưa đủ, bạn cần phải thống kê dựa trên kết quả, bằng cách giới hạn phạm vi tìm kiếm của bạn. Và tôi giới hạn lại bằng kích thước màn hình, phạm vi giá,... cho đến khi tôi tìm được 5 sản phẩm.
Cuối cùng là vấn đề về tốc độ - bởi vì không ai muốn phải đợi lâu. Tôi đã từng truy cập website và tìm kiếm kết quả mất hết vài phút. Vài phút ! Cho một làm tìm kiếm!
Nếu bạn muốn tạo ra một bộ tìm kiếm tối ưu, thì bạn phải giải quyết những vấn đề sau:
- Trả về kết quả tìm kiếm có liên quan với nhau.
- Trả về kết quả thống kê. (Ví dụ: tìm kiếm áo -> 120 áo thun, 32 áo sơ mi,...)
- Thực hiện trong thời gian ngắn.
Đây là những nơi các công cụ tìm kiếm như Elasticsearch phát huy tác dụng, bởi vì chúng được xây dựng để đáp ứng những thác thức đdựa
Bạn có thể triển khai một công cụ tìm kiếm (search engine) ở phía trên cơ sở dữ liệu quan hệ để tạo các chỉ mục (index) và tăng tốc độ tìm kiếm của câu truy vấn. Hoặc bạn có thể lập chỉ mục cho No SQL để tăng khả năng tìm kiếm.
Bạn có thể làm điều đó với Elasticsearch, và nó hoạt động tốt với nơi lưu trữ theo hướng tài liệu (document-oriented) như là Mongo DB bởi vì dữ liệu trong Elasticsearch cũng được thể hiện bằng tài liệu (document).
Các công cụ tìm kiếm hiện đại như Elasticsearch cũng làm tốt công việc lưu trữ dữ liệu của bạn, để bạn có thể sử dụng chúng như là nơi lưu trữ dữ liệu No SQL với khả năng tìm kiếm mạnh mẽ.
Elaticsearch là mã nguồn mở và phân tán, và nó được xây dựng trên nền tảng của Apache Lucene, 1 thư viện của công cụ tìm kiếm với mã nguồn mở. Cho phép bạn triển khai chức năng tìm kiếm trong ứng dụng Java của bạn.
Elasticsearch tận dụng chức năng của Lucene để mở rộng chức năng cho việc lưu trữ, lập chỉ mục và tìm kiếm nhanh hơn và dễ dàng hơn, và như tên gọi của nó Elastic (co giãn, mở rộng).
Ngoài ra, ứng dụng của bạn không cần phải viết bằng code Java để kết nối với Elasticsearch. Bạn có thể gửi dữ liệu qua HTTP bằng JSON, để lập chỉ mục, tìm kiếm, và quản lí cụm(cluster) Elasticsearch.
Trong phần này sẽ trình bày về chức năng tìm kiếm, đặc điểm của dữ liệu, và bạn sẽ học cách sử dụng chúng. Đầu tiên chúng ta sẽ xem xét kỹ hơn về những thử thách của công cụ tìm kiếm thường phải đối mặt và cách tiếp cận của Elasticsearch để giải quyết chúng.
👍️