Trang chủ Cloud Computing

Elasticsearch là gì? Cách sử dụng Elasticsearch

Elasticsearch là gì? Cách sử dụng Elasticsearch

Trong thế giới công nghệ ngày nay, một lượng lớn dữ liệu định xấp xỉ 2,5 nghìn tỷ byte được tạo ra mỗi ngày. Dữ liệu này chủ yếu đến từ các nguồn khác nhau: từ các trang social media sites, trang video sharing, cho đến các tổ chức quy mô trung bình đến khổng lồ. Toàn bộ các dữ liệu này được gọi là data ocean, hoặc gọi tên theo cách chuyên môn hơn, đó chính là Big Data. Phần lớn khi các dữ liệu này đứng riêng một mình mà không hề có sự thống kê hay phân tích nào, chúng sẽ trở nên vô nghĩa, đồng thời không có chút giá trị nghiên cứu nào cả. Để làm cho các dữ liệu này trở nên ý nghĩa, bạn cần có các công cụ phục vụ cho việc phân tích. Có rất nhiều công cụ phân tích sẵn có trên thị trường giúp bạn có thể khám phá, ghi lại, truy cập, phân tích và xử lý các dữ liệu phi cấu trúc này. Trong số tất cả có thể nhắc tới Elasticsearch là một trong những công cụ nổi bật nhất. Bài viết sau đâyBizfly Cloud  sẽ giúp bạn hiểu rõ hơn về Elasticsearch.

>> Xem thêm:  BIG DATA là gì? Big data trong kĩ thuật và trong cuộc sống

Elasticsearch là gì?

Theo Wikipedia Elasticsearch là một công cụ tìm kiếm dựa trên Lucene. Nó cung cấp một công cụ tìm kiếm toàn diện có khả năng phân tán, đa nhiệm với HTTP web interface và schema-free JSON documents.

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

>> Tham khảo thêm:  Database server là gì? Chức năng, hoạt động và lợi ích của Database server

Như đã đề cập ở trên, Elasticsearch sử dụng Apache Lucene để indexing và searching. Do đó, Lucene chỉ là một thư viện và để làm việc được với nó sẽ là một quá trình rất phức tạp. Tuy nhiên, Elasticsearch đã khắc phục các khó khăn đó bằng cách ẩn tất cả những thao tác phức tạp bằng cách cung cấp quyền truy cập vào API. API đi kèm dưới dạng một API RESTful HTTP sử dụng JSON làm định dạng trao đổi dữ liệu. Sử dụng Elasticsearch bạn có thể lưu trữ, tìm kiếm và phân tích khối lượng lớn dữ liệu một cách nhanh chóng và hiệu quả. Nó đặc biệt hữu ích trong khi xử lý dữ liệu bán cấu trúc tức là ngôn ngữ tự nhiên.

Vậy là bạn đã biết Elasticsearch là gì, hãy tìm hiểu một chút về lịch sử của nó.

Elasticsearch là một sản phẩm của công ty có tên là Elastic, được thành lập vào năm 2012. ElasticSearch là một trong những sản phẩm nguồn mở lớn cùng với Logstash, Kibana và Beats. Elastic cung cấp một số sản phẩm thương mại khác như Marvel, Shield, Watcher, Found,...

Vào năm 2004, Shay Banon đã tạo ra Compass, được coi là tiền thân của Elasticsearch. Quá trình phát triển của Elasticsearch được mô tả trong dòng thời gian sau:

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 1.

Ưu điểm của Elasticsearch

    1. Khả năng mở rộng

Elasticsearch rất dễ mở rộng và đáng tin cậy. Đây là một tính năng rất quan trọng giúp đơn giản hóa các kiến trúc phức tạp và tiết kiệm thời gian trong quá trình thực hiện các dự án.

2. Tốc độ

Elasticsearch sử dụng distributed inverted indices để tìm các kết quả phù hợp nhất cho full-text searches giúp việc tìm kiếm từ các tập dữ liệu rất lớn trở nên vô cùng nhanh chóng.

3. Dễ dàng sử dụng API

Elasticsearch cung cấp các API RESTful đơn giản và sử dụng các schema-free JSON documents giúp việc indexing, searching, và querying thật dễ dàng.

4. Đa ngôn ngữ

Một trong những tính năng khác biệt nhất mà Elasticsearch sở hữu đó chính là đa ngôn ngữ. Nó hỗ trợ nhiều tài liệu được viết bằng các ngôn ngữ khác nhau như tiếng Ả Rập, tiếng Braxin, tiếng Trung, tiếng Anh, tiếng Pháp, tiếng Hindi, tiếng Hàn,...

5. Theo định hướng tài liệu (Document-Oriented)

Elasticsearch lưu trữ các thực thể phức tạp trong thế giới thực dưới dạng các structured JSON documents và lập chỉ mục tất cả các trường theo mặc định giúp cho dữ liệu luôn có thể tìm kiếm được. Vì không có hàng và cột dữ liệu, bạn có thể thực hiện full-text search phức tạp một rất cách dễ dàng.

6. Tự động hoàn thành (autocompletion)

Elasticsearch cung cấp chức năng tự động hoàn thành. Bằng cách dự đoán từ bằng cách sử dụng rất ít ký tự, autocompletion sẽ tăng tốc độ tương tác giữa con người và máy tính.

7. Schema-Free

Elasticsearch là schema-free vì nó chấp nhận các tài liệu JSON. Nó cố gắng phát hiện cấu trúc dữ liệu, lập chỉ mục dữ liệu, làm cho dữ liệu có thể tìm kiếm được.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 2.

Cách cài đặt Elasticsearch

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 3.

Bước 1 - Cài đặt phiên bản Java mới nhất hoặc nếu bạn đã cài đặt Java rồi kiểm tra phiên bản của nó bằng cách sử dụng lệnh java–version trong cmd.

Lưu ý: Phiên bản Java từ 7 trở lên.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 4.

Bước 2 - Truy cập https://www.elastic.co/downloads.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 5.

Bước 3 - Nhấp vào Tải xuống để nhận tệp zip.
Bước 4 - Khi tệp được tải xuống, giải nén nội dung.
Bước 5 - Đến elasticsearch-x.y.z> bin.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 6.

Bước 6 - Bên trong thư mục bin, tìm tập tin elasticsearch.bat và click đúp để khởi động máy chủ Elasticsearch.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 7.

Bước 7 - Đợi máy chủ khởi động.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 8.

Bước 8 - Mở trình duyệt và gõ localhost: 9200 để kiểm tra xem máy chủ có đang chạy hay không.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 9.

Bước 9 - Nếu bạn thấy thông báo được hiển thị trên trên trình duyệt, có nghĩa là các cài đặt đang thành công.
Bước 10 - Điều cuối cùng bạn cần làm là thêm plugin Sense (beta) sẽ hoạt động như một developers interface cho Elasticsearch.

Elasticsearch là gì? Cách sử dụng Elasticsearch - Ảnh 10.

Các khái niệm cơ bản của Elasticsearch

Trước khi đi sâu hơn vào Elasticsearch, có vài khái niệm mà bạn cần phải hiểu sau đây.

    1. Near Real-Time (Gần thời gian thực)

Elasticsearch là một real-time search platform có nghĩa là nó có thể thường xuyên lên lịch cho một trạng thái mới của các tài liệu tìm kiếm được. Theo mặc định các trạng thái sẽ được làm mới theo giây. Do đó, sẽ tồn tại một độ trễ nhỏ cho đến khi tài liệu trở nên có thể tìm kiếm được, từ lúc bạn lập index.

2. Index

Index là tập hợp các tài liệu có đặc điểm tương tự. Nó lưu trữ dữ liệu trong một hoặc nhiều indices bằng cách sử dụng các phép so sánh SQL, được sử dụng để lưu trữ và đọc các tài liệu. Trong Elasticsearch, một index được xác định bởi một tên duy nhất và phải là chữ thường. Tên này sẽ được sử dụng để chỉ một index cụ thể khi thực hiện các hoạt động khác nhau trên các tài liệu. Trong một single cluster có thể có n indexes.

3. Document

Trong Elasticsearch, một document là một đơn vị thông tin cơ bản mà chúng ta có thể lập index. Các tài liệu này bao gồm các trường khác nhau và mỗi trường trong số các trường này được xác định theo tê, và có thể chứa một hoặc nhiều giá trị. Các tài liệu này đều là schema free và có thể có một nhóm trường khác. Tài liệu này là một JSON (JavaScript Object Notation). Trong một index có thể lưu trữ được n tài liệu.

4. Type

Trong Elasticsearch, type được định nghĩa cho các tài liệu có một tập các trường chung. Nó là một logical category/ partition của một index có ngữ nghĩa học hoàn toàn tùy thuộc vào người dùng. Bạn cũng có thể xác định nhiều type trong một index.

5. Node

Một node là một single instance của Elasticsearch server lưu trữ dữ liệu. Node tham gia vào cluster's indexing và searching capabilities. Một node được xác định bằng tên. Theo mặc định, một IDentifier ngẫu nhiên duy nhất (UUID) được gán cho node khi khởi động. Tên này được sử dụng cho mục đích quản trị. Bạn có thể xác định máy chủ nào trong mạng của bạn tương ứng với các node nào trong cụm Elasticsearch bằng cách sử dụng các tên này.

6. Cluster

Cluster là một tập hợp của một hoặc nhiều node Elasticsearch (máy chủ) hoạt động cùng nhau. Nó chứa toàn bộ dữ liệu và cung cấp khả năng index và search dễ dàng trên tất cả các node, cho phép xử lý dễ dàng một khối lượng dữ liệu quá lớn so với khả năng xử lý của một node duy nhất. Giống như một node, một cluster cũng được xác định bằng một tên duy nhất. Theo mặc định, tên đó luôn là "elasticsearch". Một node chỉ có thể là một phần của một cluster nếu node được thiết lập để nối cluster bằng tên của nó và đó là lý do tại sao tên của cluster là rất quan trọng.

7. Shards

Sử dụng một cluster, bạn có thể lưu trữ khối lượng lớn thông tin vượt quá khả năng của một single server. Để giải quyết vấn đề này, Elasticsearch cho phép bạn chia nhỏ chỉ mục của mình thành nhiều phần được gọi là phân đoạn. Số lượng mảnh cần thiết có thể được xác định trong khi tạo chỉ mục. Mỗi phân đoạn là một "index" độc lập và đầy đủ chức năng có thể được lưu trữ trên bất kỳ node nào trong cluster.

8. Replicas

Để tránh các sự cố ngẫu nhiên (chẳng hạn như một shard hoặc node bị offline vì lý do nào đó), bạn luôn cần phải có một cơ chế chuyển đổi dự phòng (failover mechanism). Vì vậy, như một giải pháp, Elasticsearch cung cấp replicas. Replicas chỉ là một bản sao bổ sung của shard và có thể được sử dụng cho các truy vấn giống như bản gốc.

Các quy ước API

Các API REST Elasticsearch được truy cập bằng cách sử dụng JSON qua HTTP. Elasticsearch sử dụng các quy ước sau trong suốt API REST.

    1. Multiple Indices

Nói chung, các hoạt động trong API dành cho nhiều chỉ mục. Điều này giúp người dùng thực hiện các hoạt động khác nhau thông qua toàn bộ API bằng cách thực hiện truy vấn liên quan một lần duy nhất. Một số ký hiệu được sử dụng cho các truy vấn này là:

- Ký hiệu phân tách bằng dấu phẩy (demo1, demo2, demo3)

- Ký tự đại diện (demo *, de * o2, demo3, -demo3)

- _all từ khóa cho tất cả các chỉ mục

- Tham số chuỗi truy vấn URL (ignore_unavailable, allow_no_indices, expand_wildcards)

2. Date Math Support trong Index Name

Bạn có thể tìm kiếm một loạt các time-series indices bằng cách sử dụng date math index name resolution. Loại tìm kiếm này giới hạn số index đang được tìm kiếm, do đó giảm tải trên cluster và cải thiện hiệu suất thực hiện. Bạn cần chỉ định ngày và giờ theo định dạng cụ thể như:

<static_name{date_math_expr{date_format|time_zone}}>

static_name: Đại diện cho phần văn bản tĩnh của tên.

date_math_expr: Đạ diện cho một dynamic date math.

date_format: Biểu diễn định dạng tùy chọn trong đó ngày được tính toán sẽ được hiển thị.

time_zone: Đại diện cho múi giờ tùy chọn.
3. Các tùy chọn phổ biến

Một số tùy chọn phổ biến là:

- Pretty Result

- Human Readable Output

- Date Math

- Response Filtering

- Flat Settings

- Parameter

- No Values

- Time Units

- Byte Size Units

- Unit-less quantities

- Distance Units

- Fuzziness

- Enabling Stack Traces

- Request Body In Query String

4. Kiểm soát truy cập dựa trên URL

Người dùng cũng có thể sử dụng proxy có quyền kiểm soát truy cập dựa trên URL để bảo mật quyền truy cập vào chỉ mục Elasticsearch. Elasticsearch cung cấp tùy chọn chỉ định chỉ mục trong URL và trên từng yêu cầu riêng lẻ trong nội dung yêu cầu đối với một số yêu cầu như:

- multi-search

- multi-get

- bulk


Nguồn: Bizfly Cloud chia sẻ

>> Có thể bạn quan tâm: Server - Máy chủ là gì? Có mấy loại server? Lựa chọn server như thế nào?

Kể từ ngày 05/11/2018, VCCloud chính thức đổi tên thành BizFly Cloud - là nhà cung cấp các dịch vụ đám mây hàng đầu tại Việt Nam hiện nay với các dịch vụ nổi bật như: BizFly Cloud Server, BizFly CDN, BizFly Load Balancer, BizFly Pre-built Application, BizFly Business Mail, BizFly Simple Storage. Hãy tăng tốc thích nghi cho doanh nghiệp cùng các giải pháp công nghệ của BizFly Cloud tại đây.