Elasticsearch là gì? Tìm hiểu về Elasticsearch

Elasticsearch là gì?

Elasticsearch là gì? – là một công cụ tìm kiếm dựa trên nền tảng Apache 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 net 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.

Chi tiết về Elasticsearch là gì? (ES)

  • Elasticsearch là một search engine.
  • Elasticsearch được kế thừa từ Lucene Apache
  • Elasticsearch thực chất hoặt động như 1 net server, có khả năng tìm kiếm nhanh chóng (close to 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 consumer 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ả.
  • 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 supply được phát triển bằng Java
Có Thể Bạn Quan Tâm :   Bay leaf là gì?

Các công ty lớn đang sử dụng

  • Wikimedia
  • athenahealth
  • Adobe Techniques
  • Fb
  • StumbleUpon Mozilla,
  • Amadeus IT Group
  • Quora
  • Foursquare
  • Etsy
  • SoundCloud
  • GitHub
  • FDA
  • CERN
  • Stack Change
  • Middle for Open Science
  • Reverb
  • Netflix
  • Pixabay
  • Motili
  • Sophos
  • Slurm Workload Supervisor

Elasticsearch hoạt động như thế nào?

elasticsearch là gì

Sau khái niệm Elasticsearch là gì, thì chúng ta lại tiếp tục tìm hiểu hoạt đông của Elasticsearch, đó là 1 server riêng biệt để “phục vụ” việc tìm kiếm dữ liệu. ES sẽ chạy một cổng (dưới native default là 9200). Người ta cũng có thể dùng ES là DB chính nhưng thường không ai làm thế vì cái gì cũng có nhiệm vụ riêng biệt của nó.

ES không mạnh trong các thao tác CRUD, nên thường sẽ dùng track track với 1 DB chính (SQL, MySQL, MongoDB …)

Tại sao nên sử dụng Elasticsearch?

Tại sao phải dùng ES trong khi tìm kiếm văn bản có thể sử dụng câu lệnh LIKE SQL cũng được?

Nếu search bằng truy vấn LIKE “%one%” thì kết quả sẽ chỉ cần chứa “one” là ra. Ví dụ: “cellphone”, “zone”, “cash”, “alone” … nói chung sẽ là 1 listing kết quả không mong muốn.

Có Thể Bạn Quan Tâm :  

Còn search bằng ES thì gõ “one” sẽ chỉ có “one” được trả về mà thôi. Truy vấn LIKE không thể truy vấn từ có dấu. Ví dụ: từ khoá có dấu là “có”, nếu truy vấn LIKE chỉ gõ “co” thì sẽ không trả về được chính xác kết quả Về Perfomance thì ES sẽ là tốt hơn, truy vấn LIKE sẽ tìm kiếm đơn thuần toàn văn bản không sử dụng index, nghĩa là tập dữ liệu càng lớn thì tìm kiếm càng lâu, trong khi ES lại “đánh index” cho các trường được chọn để tìm kiếm.

Tham khảo việc làm RESTful API lương cao cho bạn

Các khái niệm cần biết

1. Doc trong Elasticsearch là gì?

Doc là một JSON object với một số dữ liệu. Đây là fundamental info unit trong ES. Hiểu 1 cách cơ bản thì đây là đơn vị nhỏ nhất để lưu trữ dữ liệu trong Elasticsearch.

2. Index

Index có lẽ là một khái niệm quá quen thuộc đối với các anh em dùng Mysql rồi. Tuy nhiên index trong ES hoàn toàn khác trong Mysql.

Trong Elasticsearch , sử dụng một cấu trúc được gọi là inverted index . Nó được thiết kế để cho phép tìm kiếm full-text search. Cách thức của nó khá đơn giản, các văn bản được phân tách ra thành từng từ có nghĩa sau đó sẽ đk map xem thuộc văn bản nào. Khi search tùy thuộc vào loại search sẽ đưa ra kết quả cụ thể.

Có Thể Bạn Quan Tâm :   Tài khoản Demo là gì? Cách sử dụng tài khoản Demo của Capital.com để thực hành giao dịch chứng khoán Mỹ

VÍ dụ : Chúng ta có 2 văn bản cụ thể như sau :

1,The short brown fox jumped over the lazy canine 2,Fast brown foxes leap over lazy canines in summer time

Để tạo ra một inverted index, trước hết chúng ta sẽ phân chia nội dung của từng tài liệu thành các từ riêng biệt (chúng tôi gọi là phrases), tạo một danh sách được sắp xếp của tất cả phrases duy nhất, sau đó liệt kê tài liệu nào mà mỗi thuật ngữ xuất hiện. Kết quả như sau:

Time period Doc_1 Doc_2 – Fast | | X The | X | brown | X | X canine | X | canines | | X fox | X | foxes | | X in | | X jumped | X | lazy | X | X leap | | X over | X | X fast | X | summer time | | X the | X | –

Bây giờ, nếu chúng ta muốn tìm kiếm màu fast brown, chúng ta chỉ cần tìm trong các tài liệu trong đó mỗi thuật ngữ có xuất xuất hiện hay không. Kết quả như sau:

Time period Doc_1 Doc_2 – brown | X | X fast | X | – Whole | 2 | 1

Back to top button