Elasticsearch là gì? Kiến thức tổng quan về Elasticsearch

ITNavi 21 Jan 2021 12939

Elasticsearch là gì- Đây là một khái niệm được rất nhiều lập trình viên quan tâm trong thời gian gần đây. Là một trong những công cụ hỗ trợ tìm kiếm nên Elasticsearch đang được sử dụng vô cùng rộng rãi hiện nay. Nếu như bạn đang muốn tìm hiểu kỹ lưỡng về công cụ này thì đừng bỏ qua những thông tin mà ITNavi giới thiệu trong bài viết sau. 

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

Dựa theo wikipedia thì định nghĩa Elasticsearch là gì được lý giải như sau:  Elasticsearch là một công cụ tìm kiếm dựa vào nền tảng Apache Lucene. Công cụ này cung cấp một bộ máy tìm kiếm có dạng phân tán với đầy đủ công cụ với một giao diện web HTTP có hỗ trợ cho các dữ liệu JSON. 

Nên hiểu Elasticsearch là gì?

Nên hiểu Elasticsearch là gì?

Hay nói một cách khác thì Elasticsearch chinh là một database server mã nguồn mở hoàn toàn độc lập được phát triển trong nền tảng Java. Về cơ bản, thì nó sẽ được sử dụng với mục đích tìm kiếm và phân tích văn bản. Nó sẽ lấy các dữ liệu không có cấu trúc từ nhiều nguồn khác nhau rồi lưu trữ nó ở định dạng phức tạp hơn nhằm tối ưu hóa cao cho các tìm kiếm dựa vào ngôn ngữ. 

Bởi vì Elasticsearch sử dụng Apache Lucene để indexing và searsing nên Lucene chỉ là một thư viện và để làm việc được với nó thì bạn phải trải qua một quá trình hết sức phức tạp. Mặc dù vậy, thì Elasticsearch lại có thể khắc phục được khó khăn này bằng biện pháp ẩn đi tất cả các thao tác phức tạp khác bằng cung cấp quyền truy cập vào API. 

Việc sử dụng Elasticsearch sẽ giúp bạn có thể tìm kiếm, phân tích và lưu trữ khối lượng dữ liệu vô cùng nhanh chóng. Đặc biệt, nó rất hữu ích khi dữ liệu các dữ liệu bán cấu trúc cũng tức là ngôn ngữ tự nhiên. 

Bạn đọc tham khảo thêm một số việc làm devops trên ITNAVI

Tìm hiểu chi tiết Elasticsearch là gì?

Dưới đây là những định nghĩa chi tiết về Elasticsearch mà bạn không nên bỏ qua: 

  • Elasticsearch được xem là một search engine. 
  • Công cụ Elasticsearch được kế thừa từ Lucene Apache. 
  • Elasticsearch hoạt động thực chất sẽ như 1 web server với khả năng tìm kiếm nhanh chóng thông qua giao thức RESTful. 
  • Elasticsearch sở hữu khả năng phân tích và thống kê dữ liệu vô cùng hiệu quả. 
  • Elasticsearch chạy trên nền tảng server riêng và đồng thời giao tiếp thông qua RESTful vậy nên nó không quá phụ thuộc vào client được viết bằng gì hoặc hệ thống hiện tại của bạn được viết bằng gì. Bởi vậy, việc tích hợp nó vào hệ thống sẽ trở nên dễ dàng hơn và bạn chỉ cần thực hiện hành động gửi request http lên là nó sẽ trả về kết quả. 
  • Elasticsearch là một hệ thống phân tán với khả năng mở rộng vô cùng tuyệt vời. Bạn chỉ cần lắp thêm node cho nó là nó sẽ auto mở rộng cho bạn. 
  • Elasticsearch chính là một open source được phát triển bằng chính ngôn ngữ Java. 
Tìm hiểu chi tiết về Elasticsearch 

Tìm hiểu chi tiết về Elasticsearch 

Cách thức hoạt động của Elasticsearch là gì?

Hoạt động của Elasticsearch được hiểu là một server riêng biệt giúp “phục vụ” các nhu cầu tìm kiếm dữ liệu. ES sẽ chạy dưới một cổng và người ta cũng có thể sử dụng ES là DB tuy nhiên thường thì không ai làm như thế bởi vì mỗi công cụ đều có nhiệm vụ riêng của mình.  ES mặc dù không quá mạnh trong thao tác CRUD nên thường được sử dụng song song với 1 DB chính (SQL, mySQL, MongoDB,...)

Bạn đọc tham khảo một số việc làm tuyển dụng tester Hà Nội lương cao chế độ hấp dẫn

Tuyển dụng việc làm PHP lương cao chế độ hấp dẫn

Việc làm developer Python lương cao chế độ hấp dẫn

Tuyển dụng việc làm IOS lương cao chế độ hấp dẫn

Lý do thuyết phục bạn sử dụng Elasticsearch là gì?

Lý mà Elasticsearch đang được sử dụng rất ưa chuộng hiện nay là:  Nếu như bạn search bằng truy vấn LIKE “%one%” thì kết quả sẽ chỉ cần chứa “one” là đủ.  Còn với việc bạn search bằng ES thì chỉ cần gõ “one” thì sẽ chỉ có “one” được trả về mà thôi. Bởi vậy, việc truy vấn LIKE không thể thực hiện truy vấn các từ có dấu được. 

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

Ưu điểm nổi bật của Elasticsearch là gì? 

Elasticsearch sở hữu những ưu điểm nổi bật như sau: 

  • Hỗ trợ tìm kiếm dữ liệu mạnh mã, nhanh chóng dựa trên Apache Lucene.
  • Mang lại khả năng phân tích dữ liệu vô cùng hiệu quả. 
  • Có khả năng mở rộng dựa theo chiều ngang rất tuyệt vời. 
  • Công cụ này có khả năng hỗ trợ tìm kiếm, nếu như từ khóa tìm kiếm bị lỗi chính tả hoặc không đúng cú pháp thì vẫn có khả năng Elasticsearch trả về với kết quả cực tốt. 
Ưu điểm của Elasticsearch là gì?

Ưu điểm của Elasticsearch là gì?

  • Elasticsearch có thể hỗ trợ Structured Query DSL cung cấp cho nhu cầu đặc tả những câu truy vấn phức tạp hơn một cách rõ ràng và cụ thể bằng JSON. 
  • Elasticsearch hỗ trợ cho nhiều Elasticsearc client như PhP, Java, Ruby, Javascript, Python, .NET,...

Các khái niệm khác liên quan đến Elasticsearch mà bạn nên biết

Về Document trong Elasticsearch là gì?

Document là  một JSON object với một số dữ liệu riêng, đây là basic information unit có trong ES. Bạn có thể hiểu theo một cách cơ bản hơn, đây chính là một đơn vị nhỏ nhất giúp lưu trữ các dữ liệu có trong Elasticsearch. 

Về index

Index có thể là một khái niệm khá quen thuộc với những lập trình viên có sử dụng Mysql. Tuy nhiên, index ở trong ES có nhiều điểm khác biệt so với Mysql.  Trong Elasticsearch việc sử dụng một cấu trúc sẽ được gọi là inverted index và nó thường được thiết kế để bạn có thể tìm kiếm full-text search.

Cách thức của nó tương đối đơn giản và các văn bản đều sẽ được phân tách ra thành những từng có ý nghĩa, sau đó sẽ được map tìm hiểu xem nó thuộc dạng văn bản nào. Khi đó, search sẽ tùy thuộc vào loại search để có thể đưa ra được kết quả cuối cùng. 

Về Shard

Shard là một đối tượng của Lucene và nó chính là tập hơn con của các documents của 1 index, trong đó thì 1 index có thể chia thành nhiều shard hơn.  Mỗi một node sẽ bao gồm nhiều Shard khác nhau, chính vì vậy mà shard là đối tượng nhỏ nhất, hoạt động trong mức thấp nhất và đóng vai trò lưu trữ dữ liệu vô cùng tốt. 

Chúng sẽ sẽ gần như không bao giờ làm việc trực tiếp với các Shard bởi vì Elasticsearch đã support toàn bộ giao tiếp cũng như tự động thay đổi cho các Shard ngay khi cần thiết.  Hiện nay, có 2 loại Shard cơ bản là: primary shard và replica shard. Cụ thể về 2 loại Shard này như sau: 

Primary Shard

Primary Shard có nhiệm vụ lưu dữ liệu và đánh index, sau khi các dữ liệu đã được đánh xong thì sẽ được vận chuyển tới các Replica Shard. Mặc định của Elasticsearch chính là mỗi index sẽ có 5 primary shard và với một Primary Shard thì nó sẽ đi kèm với 1 Replica Shard. 

Replica Shard

Replica Shard chính xác như cái tên của nó bởi nó chính là sự lưu trữ dữ liệu nhân bản của Primary Shard. Replica Shard có vai trò quan trọng nhằm đảm bảo tính toàn vẹn cho dữ liệu trong trường hợp Replica Shard xảy ra vấn đề.  Ngoài ra, Replica Shard còn hỗ trợ giúp tăng trưởng tốc độ tìm kiếm của chúng ta nhờ vào việc setup lượng Replica Shard sẽ nhiều hơn so với mặc định của ES. 

Elasticsearch được sử dụng ngày càng phổ biến

Elasticsearch được sử dụng ngày càng phổ biến

Node

Node chính là trung tâm hoạt động của Elasticsearch và là nơi giữ nhiệm vụ lưu trữ dữ liệu cũng như tham gia vào thực hiện đánh index của cluster cũng như thực hiện những thao tác tìm kiếm khác.  Mỗi một node thường sẽ được định danh bằng 1 unique name. 

Cluster

Cluster là tập hợp các nodes đang hoạt động chung với nhau và chia sẻ cùng thuộc tính cluster.name. Chính vì vậy, Cluster sẽ được xác định bằng 1 “unique name”. Việc định danh cluster trùng tên sẽ gây ra các lỗi cho node, vậy nên khi setup bạn cần chú ý hết sức ở điểm này. 

Mỗi một cluster sẽ có 1 node chính thức và được lựa chọn một cách tự động để có thể thay thế nếu như sự cố xảy ra. Mỗi một cluster thường sẽ gồm 1 hoặc nhiều nodes và các node này có thể hoạt động trên cùng một server.  Một Cluster thường nhiều node hoạt động trên các server khác nhau và có thể hoạt động với các chức năng đầy đủ hơn so với khi có 2 server. Những node này thường được tìm thấy nhau để có thể hoạt động ở trên cùng 1 cluster qua giao thức unicast. 

Tổng kết

Trên đây là tổng hợp những kiến thức trọng tâm liên quan đến Elasticsearch mà ITNavi muốn gửi đến bạn đọc. Hy vọng, với những thông tin trên thì bạn đã hiểu rõ Elasticsearch là gì cũng như những lợi ích khi sử dụng Elasticsearch. Hiện nay, có rất nhiều tài liệu liên quan đến Elasticsearch được xuất bản, nếu như bạn có nhu cầu hiểu rõ hơn về công cụ này thì có thể tìm kiếm được những tài liệu này để tham khảo thêm.

ITNavi - Nền tảng kết nối việc làm IT

Nguồn: Elasticsearch là gì? Kiến thức tổng quan về Elasticsearch

Bài viết liên quan

NEWSLETTER

Nhập địa chỉ email của bạn dưới đây để đăng ký nhận tin mới nhất

KẾT NỐI VÀ THEO DÕI