Aws Elasticsearch là gì

Elasticsearch là công cụ tìm kiếm và lưu trữ toàn văn bản, có khả năng mở rộng cao. Nó cho phép chúng ta lưu trữ, tìm kiếm và phân tích với dữ liệu rất lớn, cho kết quả gần với thời gian thực. Elastic thường được sử dụng như một công cụ hỗ trợ cho những app có chức năng search hoặc yêu cầu phức tạp.
Dưới đây là một vài ứng dụng có thể sử dụng elasticsearch

  • Khi bạn chạy một web bán hàng online, bạn cho phép khách hàng có thể tìm kiếm tìm kiếm sản phẩm của bạn. Trong trường hợp này bạn có ther sử dụng elastic search để lưu trữ toàn bộ danh mục sản phẩm, cung cấp các đề xuất tìm kiếm. Lưu trữ các khoảng không quảng cáo và làm đầy chúng khi cần thiết.
  • Bạn muốn có một tập log hoặc có tập dữ liệu trao đổi và bạn muốn phân tích chúng thành các data dưới dạng xu hướng, thống kê, tóm tắt, hoặc không phải các loại trên. Trong trường hợp này bạn có thể sử dụng Logstash [một phần của Elasticsearch] để thu thập, tổng hợp và phân tích cú pháp dữ liệu của bạn, sau đó chuyển dữ liệu từ Logstash vào elasticsearch. Lúc này, bạn có thể search hoặc tổng hợp thông tin theo cách mình muốn.
  • Bạn có nhu cầu phân tích, hoặc kinh doanh mà muốn điều tra, phân tích, hoặc cái nhìn trực quan hoặc đặt câu hỏi quảng cáo cho một dữ liệu rất lớn. Trường hợp này , bạn cần sử dụng Elasticsearch để lưu trữ data của bạn và sau đó sử dụng Kibana [một phần của Elasticsearch/ Logstash/Kibana stack] để xây dựng bảng điều tra , điều đó giúp bạn có thể trực quan hóa data của mình, đây cũng là điều rất quan trọng. Thêm vào đó, bạn có thể sử dụng chức năng tổng hợp của Elasticsearch để xây dựng nhũng câu truy vấn thông minh phù hợp với yêu cầu bài toán.

2. Khái niệm cơ bản của Elasticsearch

Elasticsearch là một trong những nền tảng Near Realtime có nghĩa là thời gian thực hiện của thuật toán elasticsearch có độ trễ rất nhỏ, rất gần với thời gian thực. Độ trễ của bài toán thường chỉ 1 giây từ việc lập chỉ mục đến thời gian đưa ra kết quả search.

Cluster

Cluster-cụm là một tập hợp một hay nhiều node-nút [hay server] cùng nắm giữ toàn bộ data, cung cấp khả năng lập chỉ mục và tìm kiếm liên kết giữa các node với nhau. mỗi cluster được định danh bằng một tên duy nhất, ví dụ tên của cụm là "elasticsearch", mỗi node-nút là một phần của cụm khi được thiết lập được nối với cụm bằng tên "elasticsearch".

Node

Node- nút là một server đơn lẻ, là một phần của cluster, lưu trữ data của bạn, tham gia vào chức năng lập chỉ mục và tìm kiếm. Cũng như cluster, node cũng được định danh, mỗi nút được biết đến với một tên thường được đặt mặc định ngẫu nhiên bởi Universally Unique IDentifier [UUID], việc đặt tên được tiến hành khi thiết lập, bạn cũng có thể tự định danh cho nút của mình. Tên của nút rất quan trọng trong việc xác định nút này thuộc cụm nào trong elasticsearch của bạn

Index

Index- chỉ mục là một tập hợp của tài liệu mà chứa những đặc điểm tương tự. Ví dụ, bạn có chỉ mục về dữ liệu khách hàng, một chỉ mục khác về danh mục sản phẩm, và những chỉ mục khác cho những data khác. Chỉ mục cũng được định danh bằng tên, tên này được sử dụng khi thực hiện các hoạt động như lập chỉ mục, tìm kiếm, cập nhật hoặc xóa các tài liệu trong đó.

Type

Type-loại được sử dụng làm danh mục của chỉ mục cho phép bạn lưu trữ các loại dữ liệu khác nhau trong cùng một chỉ mục.

Document

Document- tài liệu là đơn vị cơ bản của thông tin, được đánh chỉ mục. Với một chỉ mục hoặc một loại, bạn có thể lưu bao nhiêu tài liệu tùy thích. Tuy nhiên tài liệu cần phải đánh chỉ mục.

Shards & Replicas

Shard - phân mảnh: chỉ mục có thể lưu trữ một lượng lớn dữ liệu, có thể vượt qua giới hạn phần cứng của nút. Ví dụ, một chỉ mục chứa 1 tỷ tài liệu chiếm 1TB dung lượng, có thể dung lượng của ổ đĩa không đủ chứa có thể làm chậm quá trình trả lời các request từ những nút đơn lẻ. Để giải quyết vấn đề này, Elasticsearch cung cấp khả năng chia nhỏ chỉ mục của bạn thành nhiều phần nhỏ hơn gọi là shard-phân mảnh. Khi bạn tạo chỉ mục, bạn có thể chỉ cần xác định số lượng phân đoạn mà bạn muốn.
Shard rất quan trọng vì hai lý do:

  • Cho phép bạn phân mảnh theo chiều ngang mở rộng khối lượng bản ghi của bạn
  • Cho phép bạn phân phối và hoạt động song song trên các phân đoạn, nhờ đó tăng hiệu suất làm việc.

Replica-bản sao: trong môi trường mạng hay đám mây, có thể xảy ra lỗi bất cứ lúc nào như một nút bị ẩn hoặc biến mất, sử dụng bản sao được khuyến khích để có cơ chế dự phòng trong những trường hợp đó. Để làm được điều đó, Elasticsearch đã hỗ trợ, cho phép bạn tạo nhiều bản sao của một phân đoạn chỉ mục các bản sao đó được gọi là replica shards hay replicas for short.
Replica quan trọng vì hai lý do:

  • Cung cấp khả năng sẵn sàng cao trong trường hợp một nút biến mất hoặc ẩn đi [một nút hay nhiều nút không thành công]. Cũng vì lý do này, bản sao không bao giờ được phân bố trên cũng một nút với phân đoạn gốc mà nó chỉ được sao chép từ đó.
  • Cho phép bạn mở rộng khối lượn tìm kiếm vì có thể thực hiện trên tất cả các bản sao song song

3. Kết luận

Tóm lại, mỗi chỉ mục có thể được chia thành nhiều mảnh. Mỗi chỉ mục cũng có thể không có bản sao hoặc được nhân bản nhiều lần. Sau khi được nhân bản, mỗi chỉ mục sẽ có các phân đoạn chính và các bản sao có thể được xác định trên mỗi chỉ mục khi thiết lập. Sau khi chỉ mục được tạo, bạn có thể thay đổi số bản sao, nhưng ko thể thay đổi số phân đoạn

Bài viết trên đưa ra cho bạn cái nhìn tổng quan về Elasticsearch, Elasticsearch là gì? Cấu trúc như nào? Những khái niệm cơ bản của Elasticsearch.

4. Danh mục tài liệu tham khảo

//www.elastic.co/learn

Cùng một tác giả

5 0

1. Information Retrieval [IR] là gì? Truy xuất thông tin hay truy vấn thông tin là cách tổ chức trình bày, lưu trữ và truy cập các mục thông tin. ...

Bài viết liên quan

1 0

Elastic Search là gì? Elastic Search viết tắt là ES, đó là một phần mềm công cụ tìm kiếm được phát hành theo giấy phép Apache Liense. Công cụ Searc...

0 0

//grokonez.com/frontend/angular/angular6/angular6elasticsearchexamplequickstarthowtoaddelasticsearchjs Angular 6 ElasticSearch – Quick Start...

6 0

Introduction Elasticsearch 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 ...

Khi thực hiện một dự án hay một phần mềm giúp người dùng có thể tìm kiếm nội dung, các nhà phát triển sẽ cần phải quan tâm rất nhiều đến các công nghệ hỗ trợ tìm kiếm. Đó là vì câu lệnh LIKE trong SQL sẽ có ra những kết quả không quá ấn tượng. Do đó, nhiều công nghệ hỗ trợ tìm kiếm ra đời, trong đó có Elasticsearch. Vậy, Elasticsearch là gì? Elasticsearch dùng để làm gì? Vì sao nên sử dụng Elasticsearch? Những câu hỏi này sẽ được Tino Group giải đáp trong bài viết.

Tìm hiểu về Elasticsearch

Elasticsearch là gì?

Elasticsearch là một công cụ tìm kiếm và phân tích phân tán được xây dựng dựa trên nền tảng của Apache Lucene. Kể từ khi ra mắt năm 2010 đến nay, Elasticsearch đã nhanh chóng trở thành một công cụ tìm kiếm vô cùng thông dụng và được dùng rộng rãi trong hầu hết các công việc liên quan đến: tìm kiếm toàn văn bản – Full Text Search, thông tin bảo mật nghiệp vụ cũng như các thông tin vận hành.

Tino Group sẽ tóm tắt các thông tin về Elasticsearch một cách ngắn gọn để bạn dễ năm hơn:

  • Elasticsearch là một công cụ tìm kiếm – search engine
  • Được phát triển và kế thừa dựa trên nền tảng Apache Lucene
  • Elasticsearch là một dự án mã nguồn mở được xây dựng bằng ngôn ngữ Java
  • Elasticsearch không phụ thuộc vào ngôn ngữ xây dựng client hay server của bạn mà chạy trên server riêng và giao tiếp dựa thông qua RESTful.

Thông tin mới nhất vào ngày 21/1/2021, Elastic NV có thông báo chính thức rằng sẽ không phát hành phiên bản Elasticsearch và Kibana theo giấy phép Apache ALv2 nữa. Đồng nghĩa với việc Elasticsearch và Kibana sẽ được phát hành dưới dạng mã nguồn đóng.

Nếu bạn muốn sử dụng các phiên bản mới nhất của Elasticsearch và Kibana, bạn sẽ phải mua giấy phép Elastic hoặc SSPL. Với mỗi gói khác nhau, bạn sẽ có các quyền sử dụng khác nhau.

Trong trường hợp bạn muốn tiếp tục sử dụng Elasticsearch và Kibana miễn phí, bạn có thể tìm hiểu về dự án OpenSearch của AWS được phát triển dựa trên giấy phép ALv2.

Ứng dụng của Elasticsearch là gì?

Với lợi thế tốc độ và khả năng mở rộng mạnh mẽ, Elasticsearch có thể hỗ trợ lập index nhiều nội dung khác nhau, sử dụng trong nhiều trường hợp, ví dụ như:

  • Tìm kiếm trong doanh nghiệp
  • Tìm kiếm trong web
  • Tìm kiếm trong ứng dụng
  • Sử dụng vào ghi nhật ký và phân tích nhật ký
  • Sử dụng để đo lượng, giám sát hiệu suất của ứng dụng
  • Phân tính bảo mật
  • Phân tích doanh nghiệp
  • Đo lường các chỉ số về cơ sở hạ tầng cũng như hỗ trợ giám sát các container

Elasticsearch cung cấp một giao diện HTTP tối giản cùng REST đơn giản dựa trên API và sử dụng JSON không có schema. Tất cả những điều này giúp bạn có thể tạo ra một ứng dụng với tốc độ nhanh chóng, tiết kiệm thời gian và có thể sử dụng trong nhiều trường hợp khác nhau.

Hoạt động trong thời gian thực

Elasticsearch chỉ mất hơn 1 giây để có thể đọc hoặc ghi những dữ liệu thông thường. Nếu bạn đang cần phát triển một ứng dụng, phần mềm hoạt động theo thời gian thực, Elasticsearch sẽ có thể đáp ứng gần như trong thời gian thực và hỗ trợ giám sát những điều bất thường.

Hiệu năng cao

Elasticsearch có bản chất phân tán. Vì thế, Elasticsearch có thể xử lý cùng lúc, song song một khối lượng công việc, dữ liệu lớn và nhanh chóng tìm ra được những kết quả phù hợp với các truy vấn của bạn.

Rất nhiều công cụ và plugin bổ sung chức năng

Bộ đôi Elasticsearch và Kibana được tích hợp với nhau, cho phép bạn có thể xem được các báo cáo về tìm kiếm một cách trực quan nhất. Không chỉ vậy, Elasticsearch còn có thể kết hợp với Beats, Logstash, đồng thời hỗ trợ bạn dễ dàng chuyển đổi nguồn dữ liệu đầu vào và tải vào cluster.

Ngoài ra, bạn có thể sử dụng rất nhiều sản phẩm, plugin mã nguồn mở khác được phát triển dành riêng cho Elasticsearch để đa dạng hóa chức năng, hỗ trợ bạn thực hiện công việc trên giao diện trực quan và nhanh chóng hơn.

Dễ dàng phát triển ứng dụng

Để phát triển một ứng dụng cho thời điểm hiện tại, bạn sẽ cần phải biết được nhiều ngôn ngữ lập trình khác nhau để có thể khai thác tối đa khả năng mà ngôn ngữ mang lại, phần mềm, công nghệ bạn sử dụng sẽ cần phải hỗ trợ những ngôn ngữ đó. Và Elasticsearch hỗ trợ sẵn rất nhiều ngôn ngữ lập trình phổ biến như: Java, Python, PHP, JavaScript, Node.js, Ruby và rất nhiều ngôn ngữ lập trình khác.

Ưu điểm và nhược điểm của Elasticsearch

Ưu điểm của Elasticsearch

  • Làm một công cụ được phát triển dựa trên nền tảng Apache Lucene xử lý dữ liệu mạnh mẽ gần với thời gian thực – near-real time
  • Không chỉ tìm kiếm dữ liệu, Elasticsearch còn hỗ trợ phân tích dữ liệu
  • Khả năng mở rộng rất mạnh mẽ và tuyệt vời
  • Hỗ trợ nhiều ngôn ngữ lập trình khác nhau cho các lập trình viên trở nên thoải mái hơn
  • Hỗ trợ Structured Query DSL để cung cấp các đặc tả cho những truy vấn phức tạp một cách rõ ràng và cụ thể bằng JSON.
  • Có thể tìm kiếm bằng nhiều loại ngôn ngữ khác nhau.

Không phải là một công cụ toàn năng, vì thế, Elasticsearch cũng có một số nhược điểm đáng chú ý. Khi sử dụng, bạn nên chú ý một số điểm như:

  • Elasticsearch được thiết kế cho mục đích tìm kiếm là chính. Do đó, đối với những nhiệm vụ, chức năng khác, Elasticsearch sẽ đáp ứng kém hơn so với những phần mềm, công cụ chuyên dụng khác.
  • Đối với một số truy vấn nặng, độ trễ của Elasticsearch sẽ tăng rất nhiều lần.
  • Để khai thác được chức năng của Elasticsearch một cách tối ưu nhất, bạn sẽ cần:
    • Có rất nhiều kiến thức chuyên môn
    • Thông thạo ngôn ngữ lập trình Java
  • Một trong những điểm đáng lưu tâm khác: Elasticsearch không có khái niệm database transaction. Vì thế, tính toàn vẹn của dữ liệu sẽ không được đảm bảo và bạn không nên sử dụng vào database chính của mình.
  • Nếu ứng dụng, hệ thống của bạn cần phải thường xuyên cập nhật dữ liệu, Elasticsearch sẽ bộc lộ nhược điểm gây tốn kém tài nguyên cho việc index dữ liệu.

Đến đây, chúng ta cũng đã tìm hiểu được thêm rất nhiều kiến thức về Elasticsearch, những lợi ích Elasticsearch mang lại, ứng dụng của Elasticsearch ra sao; cả ưu điểm và nhược điểm của Elasticsearch. Tino Group hi vọng rằng với những kiến thức này, bạn có thể hiểu hơn và ứng dụng Elasticsearch vào dự án của mình. Chúc dự án của bạn thành công!

Bài viết có tham khảo nội dung từ: Elastic.co, TopDev, VIBOLA và AWS,…

Những câu hỏi thường gặp về Elasticsearch

Có, bạn có thể sử dụng Elasticsearch theo giấy phép mở của Elastic hoặc SSPL cho những chức năng cơ bản mà họ cho phép. Nếu bạn muốn sử dụng những tính năng cao cấp hơn bạn sẽ cần phải trả phí để sử dụng. Ví dụ như chức năng alerting – cảnh báo hay machine learning – máy học.

Kibana là một công cụ quản lý và trực quan hoá hỗ trợ cho Elasticsearch, Kibana cung cấp cho người dùng những biểu đồ, hình tròn, dạng map, đường hay biểu đồ theo thời gian thực.

Cho đến thời điểm hiện tại, Elasticsearch hỗ trợ các ngôn ngữ sau và đa phần là ngôn ngữ có chữ La-tinh: Arabic, Armenian, Basque, Bengali, Brazilian, Bulgarian, Catalan, Cjk, Czech, Đang Mạch, Dutch, Tiếng Anh, Estonian, Finnish, Tiếng Pháp, Galician, Tiếng Đức, Greek, Hindi, Hungarian, Indonesian, Irish, Italian, Latvian, Lithuanian, Norwegian, Persian, Portuguese, Romanian, Tiếng Nga, Sorani, Spanish, Swedish, Turkish và Thái Lan.

Ngoài ra, bạn có thể sử dụng các plugin để bổ sung thêm các ngôn ngữ khác.

Trong tương lai, khi Elastic có bổ sung, hỗ trợ thêm ngôn ngữ nào, họ sẽ công bố tại đây.

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO

  • Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí Minh
    Văn phòng đại diện: 42 Trần Phú, Phường 4, Quận 5, Thành phố Hồ Chí Minh
  • Điện thoại: 0364 333 333
    Tổng đài miễn phí: 1800 6734
  • Email:
  • Website: www.tino.org

Video liên quan

Chủ Đề