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

Elasticsearch là gì?

Elasticsearch là gì? – là một phương tiện tìm kiếm dựa trên nền tảng Apache Lucene. Nó cung cấp một máy bộ tìm kiếm dạng phân tán, có đầy đủ phương tiện với một giao diện web HTTP có tương trợ tài 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.

Rõ ràng và cụ thể về Elasticsearch là gì? (ES)

  • Elasticsearch là một search engine.
  • Elasticsearch được thừa kế từ Lucene Apache
  • Elasticsearch thực chất hoặt động như một 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ê tài liệu
  • Elasticsearch chạy trên server riêng và song song 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 mạng lưới hệ thống ngày nay của bạn viết bằng gì. Nên việc tích hợp nó vào mạng lưới hệ thống bạn là dễ dàng, bạn chỉ việc gửi request http lên là nó trả về kết quả.
  • Elasticsearch là một mạng lưới 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 hóa auto mở rộng cho bạn.
  • Elasticsearch là một open source được phát triển bằng Java

Các tập đoàn đang sử dụng

  • Wikimedia
  • athenahealth
  • Adobe Systems
  • Facebook
  • StumbleUpon Mozilla,
  • Amadeus IT Group
  • Quora
  • Foursquare
  • Etsy
  • SoundCloud
  • GitHub
  • FDA
  • CERN
  • Stack Exchange
  • Center for Open Science
  • Reverb
  • Netflix
  • Pixabay
  • Motili
  • Sophos
  • Slurm Workload Manager

Elasticsearch hoạt động ra sao?

elasticsearch là gì

Sau khái niệm Elasticsearch là gì, thì tất cả chúng ta lại tiếp tục tìm hiểu hoạt đông của Elasticsearch, đó là một server riêng biệt để “phục vụ” việc tìm kiếm tài liệu. ES sẽ chạy một cổng (dưới local default là 9200). Người ta cũng luôn có thể dùng ES là DB chính nhưng thường không có ai làm thế vì cái gì cũng luôn 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 song song với một DB chính (SQL, MySQL, MongoDB …)

Vì sao nên sử dụng Elasticsearch?

Vì sao phải dùng ES trong những lúc 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ỉ việc chứa “one” là ra. Ví dụ: “phone”, “zone”, “money”, “alone” … nói chung sẽ là một list kết quả không mong muốn.

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 còn trả về được xác thực kết quả Về Perfomance thì ES sẽ là tốt hơn, truy vấn LIKE sẽ tìm kiếm thuần tuý toàn văn bản không sử dụng index, tức thị tập tài liệu càng lớn thì tìm kiếm càng lâu, trong những lúc ES lại “đánh index” cho những 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 hiểu rõ

1. Document trong Elasticsearch là gì?

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

2. Index

Index có nhẽ là một khái niệm quá thân thuộc khi đối chiếu với các bạn bè 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ế để được chấp nhận tìm kiếm full-text search. Phương pháp 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 này 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ể.

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

1,The quick brown fox jumped over the lazy dog 2,Quick brown foxes leap over lazy dogs in summer

Để tạo ra một inverted index, trước hết tất cả 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à terms), tạo một list được sắp xếp của tất cả terms 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:

Term Doc_1 Doc_2 – Quick | | X The | X | brown | X | X dog | X | dogs | | X fox | X | foxes | | X in | | X jumped | X | lazy | X | X leap | | X over | X | X quick | X | summer | | X the | X | –

Thời điểm hiện tại, nếu tất cả chúng ta muốn tìm kiếm màu quick brown, tất cả chúng ta chỉ việc tìm trong các tài liệu trong đó mỗi thuật ngữ có xuất xuất hiện hay là không. Kết quả như sau:

Term Doc_1 Doc_2 – brown | X | X quick | X | – Total | 2 | 1

You May Also Like

About the Author: v1000