Elasticsearch là gì? Những thông tin hữu ích không thể bỏ lỡ

Mục lục

1. Giải thích dễ hiểu về Elasticsearch là gì?

Elasticsearch là một công cụ tìm kiếm được sử dụng rất phổ biến dựa trên nền tảng Apache Lucene. Elasticsearch cung cấp cho người dùng một bộ máy với đầy đủ các công vụ và tìm kiếm dạng phân tán cho một giao diện Web HTTP có được hỗ trợ dữ liệu JSON. Elasticsearch được phát hành dưới dạng mã nguồn mở theo giấy phép của Apache và được phát triển bằng Java.

Bạn có thể hiểu một cách chi tiết và đơn giản về Elasticsearch như sau:

+ Elasticsearch là một công cụ tìm kiếm - Search Engine.

+ Elasticsearch được thiết kế và tạo ra bởi  Lucene Apache.

+ Elasticsearch thực chất hoạt động như một máy chủ - Web Server với khả năng tìm kiếm cực kì nhanh chóng – Near Real Time thông qua giao thức gọi là Restful.

+ Elasticsearch có khả năng thống kế và phần tích dữ liệu cực kỳ hiệu quả.

+ Elasticsearch chạy trên một máy chủ riêng và đồng thới nó giao tiếp thông qua Restful. Điều này khiến Elasticsearch không bị phụ thuộc vào Client viết bằng gì hoặc không quan tâm đến hệ thống hiện tại của bạn viết bằng gì. Điều này khiến Elasticsearch dễ dàng tích hợp vào hệ thống của bạn, và bạn chỉ cần thực hiện gửi Request http lên là Elasticsearch sẽ trả về cho một một kết quả phù hợp nhất.

+ Elasticsearch có khả năng mở rộng tuyệt vời và là một hệ thống phân tán. Khi bạn tiến hành lắp thêm vào Elasticsearch Node là nó sẽ tự động mở rộng cho bạn đó nhé!

+ Elasticsearch là một mã nguồn mở - Open Source được phát triển bằng Java.

Như vậy qua những chia sẻ ở trên bạn đã có được đầy đủ hiểu biết nhất về Elasticsearch và có thể nắm được chính xác, chi tiết và đầy đủ khái niệm về thuật ngữ Elasticsearch là gì rồi đúng không nào? Để hiểu hơn nữa các thông tin hấp dẫn về Elasticsearch, hãy đọc những thông tin được chia sẻ trong phần tiếp theo của bài viết này nhé!

2. Hoạt động của Elasticsearch như thế nào?

Bạn có tò mò về Elasticsearch hoạt động như thế nào hay không? Chắc chắn khi tìm hiểu về Elasticsearch là gì thì bạn cũng luôn song hành với thắc mắc muốn được giải đáp về hoạt động của Elasticsearch.

Elasticsearch là một máy chủ hoạt động riêng biệt giúp “phục vụ” cho hoạt động tìm kiếm dữ liệu hiện nay. Elasticsearch sẽ chạy một cổng – dưới Local Default là 9200. Một số người thường sử dụng Elasticsearch là DB, tuy nhiên bởi cái gì cũng có nhiệm vụ riêng biệt của nó và thường không nhiều người làm như thế cả.

Elasticsearch thường được dùng song song với 1 DB chính như SQL, MySQL, MongoDB,… bởi nó không mạnh trong các thao tác Crud.

Đó là hoạt động mà một Elasticsearch tạo ra và đang thực hiện rất tốt vai trò của mình. Chính điều này cũng tạo nên sức hấp dẫn và được nhiều công ty lớn lựa chọn để ứng dụng vào sản phẩm của mình khi lập trình phần mềm đó nhé!

3. Lý do bạn nên sử dụng Elasticsearch là gì?

Khi bạn thực hiện việc tìm kiếm bằng Elasticsearch mà gõ một từ duy nhất hoặc một cụm từ thì kết quả trả về cho bạn chỉ có một mà thôi. Tuy nhiên khi bạn thực hiện truy vấn LIKE thì không thể thực hiện việc truy vấn có dấu, điều này có nghĩa là nếu bạn tìm kiếm thông tin có dấu kết quả trả về cho bạn sẽ không được chính xác, lúc này bạn về Performance thì Elasticsearch sẽ tốt hơn rất nhiều.

Khi truy vấn LIKE chỉ mang tính tìm kiếm văn bản đơn thuần mà không sử dụng Index điều này đồng nghĩa với việc thời gian tìm kiếm sẽ lâu hơn khi tập dữ liệu của bạn có dung lượng lớn. Nhưng nếu bạn sử dụng Elasticsearch lại “đánh Index” cho các trường được chọn, điều này giúp bạn dễ dàng tìm kiếm hơn và tiết kiệm được thời gian tìm kiếm hơn rất nhiều đó nhé!

Hiện nay có rất nhiều các công ty lớn khác nhau đang sử dụng Elasticsearch, có thể kể tên một số tên công ty tiêu biểu như: Wikimedia, Adobe Systems, Etsy, Facebook, Athenahealth, Quora, Netflix, Center for Open Science, Stack Exchange, Pixabay, GitHub, CERN, SoundCloud,…

4. Ưu điểm và nhược điểm của Elasticsearch là gì?

Elasticsearch mang đến những ưu điểm hết sức vượt trội tuy nhiên thì nó cũng tồn tại một số những nhược điểm. Để hiểu được ưu điểm của Elasticsearch nằm ở đâu và nhược điểm của Elasticsearch ở chỗ nào hãy đọc ngay phần chia sẻ dưới đây nhé!

4.1. Ưu điểm của Elasticsearch

Khi nói về ưu điểm của Elasticsearch mang lại, có thể kể đến những điểm nổi bật hấp dẫn đối với sử dụng bộ công cụ này như sau:

Thứ nhất, nhờ có Elasticsearch mà việc tìm kiếm dữ liệu trở lên nhanh chóng hơn, so với nhiều công cụ khác thì Elasticsearch có thể nói là rất nhanh và mạnh mẽ dựa trên Apache Lucene. Nó tìm kiếm gần với thời gian thực – Near-Real Time Searching, điều này cho thấy tốc độ tìm kiếm của nó rất nhanh.

Thứ hai, Elasticsearch có khả năng hỗ trợ người dùng phân tích dữ liệu – Analysis Data một cách rất thuận tiện.

Thứ ba, đặc biệt khi nhắc đến ưu điểm của Elasticsearch thì bạn không thể bỏ qua được điểm vượt trội của nó ở khả năng có thể mở rộng theo chiều ngàng một cách thực sự rất “tuyệt vời”.

Thứ tư, Elasticsearch hỗ trợ thực hiện tìm kiếm Fuzzy – mờ, điều này có thể hiểu đơn giản đó chính là nhờ có Elasticsearch mà khi bạn tìm kiếm từ khóa không có dấu, sai cú pháp hoặc sai lỗi chính tả thì vẫn trả về cho bạn được kết quả tìm kiếm tốt nhất và chính xác nhất với những gì bạn đang muốn tìm kiếm.

Thứ năm, Elasticsearch hỗ trợ Structured Query DSL – điều này cung cấp cho người sử dụng khi có truy vấn phức tạp một cách rõ ràng và cụ thể bằng CSOM cho những đặc tả riêng. Điều này giúp bạn thuận tiện hơn rất nhiều khi tìm kiếm đó nhé!

Thứ sáu, Elasticsearch hỗ trợ bạn sử dụng với nhiều ngôn ngữ lập trình khác nhau như PhP, Java, .Net, Ruby, Python.

Đó là những ưu điểm mà Elasticsearch mang lại, chính những ưu điểm này đã khiến công cụ này được nhiều công ty lớn sử dụng đó nhé!

4.2. Nhược điểm của Elasticsearch

Bên cạnh những ưu điểm không thể chối cãi và cực kỳ hấp dẫn như phần trên đã trình bày hết sức chi tiết thì Elasticsearch cũng còn tồn tại một số hạn chế, những nhược điểm nhỏ như:

Thứ nhất, Elasticsearch được thiết kế với mục đích chính là để sử dụng tìm kiếm, do đó với các nhiệm vụ khác thì Elasticsearch có phần kém thế hơn rất nhiều so với các Database khác như MySQL, MongoDB. Điều này khiến nhiều người khi sử dụng thường kết hợp Elasticsearch với một Database khác mà không sử dụng Elasticsearch làm Database chính.

Thứ hai, không có khái niệm Database Transaction – chuỗi các hành động khác nhau được thực hiện trên cơ sở dữ liệu trong Elasticsearch. Tức là Elasticsearch sẽ không đảm bảo được an toàn trọn vẹn cho dữ liệu trong các hoạt động Update, Insert, Delete – điều này cũng có nghĩa là dữ liệu sẽ có thể bị mất máy khi thay đổi nhiều bản ghi khiến nó xảy ra lối. Điều này khiến Elasticsearch không nến là Database chính đó nhé, bởi nó có thể khiến dữ liệu của bạn bị mất đi phần nào đó.

Thứ ba, Elasticsearch không tích hợp được với những hệ thống mà thường xuyên phải cập nhật dữ liệu. Bởi Elasticsearch sẽ rất tốn kém cho việc đánh Index dữ liệu của bạn đó nhé!

Trên đây là một vài nhược điểm bạn cần chú ý khi chọn Elasticsearch để sử dụng đó nhé!

5. Một số khái niệm cần nắm được liên quan đến Elasticsearch là gì?

Khi nói đến Elasticsearch bạn cần nắm được một số khái niệm có liên quan mật thiết đến nó như sau:

Thứ nhất, Document là một đối tượng JSON với một số dữ liệu. Document là một đơn vị thông tin cơ bản trong Elasticsearch hiện nay. Có thể nói Document như một đơn vị nhỏ nhất trong Elasticsearch dùng để lưu trữ dữ liệu.

Thứ hai, Index – là một cấu trúc được sử dụng trong Elasticsearch và thường được gọi là Inverted Index. Với mục đích thiết kế ra để cho phép tìm kiếm toàn bộ văn bản. Cách thức của Index cũng rất đơn giản, một văn bản hoàn chỉnh sẽ được phân tách thành từng từ có nghĩa, sau đó sẽ được điều kiện Map xem thuộc diện văn bản nào. Điều này giúp bạn khi đưa ra các điều kiện tìm kiếm và có kết quả cụ thể.

Thứ ba, Shard là một tập hợp con của các Documents của 1 Index, nó cũng là đối tượng của Lucene. Trong một Index có thể chia thành nhiều Shard khác nhau. Share cũng là một đối tượng nhỏ nhất hoạt động ở mức thấp nhất và đóng một vai trò trong việc lưu trữ dữ liệu bởi mỗi Node sẽ chứa nhiều Shard.

Thứ tư, Node trong Elasticsearch là một trung tâ hoạt động, nó tham gia trực tiếp vào việc thực hiện đánh Index của Cluster, là nơi lưu trữ dữ liệu, cũng như thực hiện các thao tác tìm kiếm. Trong Elasticsearch mỗi Node được định dạng bằng 1 Unique Name.

Thứ năm, Cluster là tập hợp các các Nodes có cùng hoạt động với nhau, có chia sẻ cùng thuộc tính. Đặc biệt là không được định dạng các Cluster trùng tên bởi nó sẽ gây ra lỗi với các Node. Chức năng chính của Cluster trong Elasticsearch đó chính là đưa ra “phán quyết” xem Shard nào được phân bố cho Node nào thì phù hợp và khi nào di chuyển để cân bằng lại Cluster.

Đó là một số khái niệm bạn cần biết có liên quan đặc biệt mật thiết với Elasticsearch mà khi tìm hiểu về nó bạn cần nắm và hiểu rõ các thuật ngữ này.

Qua chia sẻ về Elasticsearch trong bài viết này đưa bạn đọc tìm được đáp án chi tiết và để hiểu cho Elasticsearch là gì, đồng thời bạn cũng có thể những kiến thức hữu ích cho bản thân về Elasticsearch. Hy vọng với những chia sẻ bổ ích này sẽ mang đến những kiến thức thực sự lý thú và hữu ích với những ai đó đang cần tìm hiểu nhé!

Đăng ngày 20/11/2020, 35 lượt xem