Elasticsearch trên AWS

Elasticsearch trên AWS

Elasticsearch là gì?

  • Là công cụ tìm kiếm và phân tích phân tán RESTful mã nguồn mở, được xây dựng trên Apache Lucene.
  • Kể từ khi phát hành năm 2010, Elasticsearch đã nhanh chóng trở thành công cụ tìm kiếm thông dụng nhất và được sử dụng rộng rãi cho các trường hợp sử dụng liên quan đến phân tích log, tìm kiếm toàn văn bản, thông tin bảo mật, phân tích nghiệp vụ và thông tin vận hành.

Elasticsearch hoạt động như thế nào?

  • Bạn có thể gửi dữ liệu dưới dạng tài liệu JSON lên Elasticsearch bằng cách sử dụng API hoặc công cụ thu thập như Logstash và Amazon Kinesis Firehose.
  • Elasticsearch tự động lưu trữ văn bản gốc và thêm tham chiếu có thể tìm kiếm vào văn bản ở phần chỉ mục của cluster. Khi đó bạn có thể tìm và truy xuất văn bản bằng cách sử dụng Elasticsearch API.
  • Bạn cũng có thể sử dụng Kibana – một công cụ trực quan hóa mã nguồn mở, cùng với Elasticsearch để trực quan hóa dữ liệu và xây dựng bảng thông tin tương tác.

Elasticsearch có miễn phí không?

  • Có, Elasticsearch là phần mềm mã nguồn mở, miễn phí.
  • Bạn có thể chạy Elasticsearch tại cơ sở, trên Amazon EC2 hoặc trên Amazon Elasticsearch Service.
  • Với hình thức triển khai tại cơ sở hoặc trên Amazon EC2, bạn chịu trách nhiệm cài đặt Elasticsearch và phần mềm cần thiết khác, cung cấp cơ sở hạ tầng và quản lý cluster.
  • Mặt khác, Amazon Elasticsearch Service là dịch vụ được quản lý toàn phần nên bạn không phải lo lắng về những tác vụ quản lý cluster tiêu tốn nhiều thời gian như cung cấp phần cứng, vá lỗi phần mềm, khôi phục sự cố, sao lưu và giám sát.

Lợi ích của Elasticsearch

  • HIỆU NĂNG CAO
    • Bản chất phân tán của Elasticsearch giúp hệ thống xử lý song song các khối lượng dữ liệu lớn, nhanh chóng tìm được dữ liệu phù hợp với yêu cầu của bạn.
  • PHÁT TRIỂN ỨNG DỤNG DỄ DÀNG
    • Elasticsearch hỗ trợ nhiều ngôn ngữ khác nhau như Java, Python, PHP, JavaScript, Node.js và Ruby, v.v..
  • HOẠT ĐỘNG GẦN THEO THỜI GIAN THỰC
    • Hoạt động của Elasticsearch chẳng hạn như đọc hay ghi dữ liệu thường mất chưa đầy 1 giây để hoàn tất.
    • Việc này cho phép bạn sử dụng Elasticsearch cho các trường hợp sử dụng gần theo thời gian thực như giám sát ứng dụng và phát hiện bất thường.
  • CÔNG CỤ VÀ PLUGIN BỔ SUNG
    • Elasticsearch được tích hợp sẵn Kibana – một công cụ trực quan hóa và báo cáo thông dụng.
    • Hệ thống cũng cung cấp khả năng tích hợp với Beats và Logstash, trong khi cho phép bạn dễ dàng chuyển đổi dữ liệu nguồn và tải dữ liệu vào cluster Elasticsearch của bạn.
    • Bạn cũng có thể sử dụng một số plugin mã nguồn mở của Elasticsearch chẳng hạn như công cụ phân tích và gợi ý ngôn ngữ để bổ sung tính năng cho ứng dụng của bạn.

Bắt đầu sử dụng Elasticsearch trên AWS

  • Bước 1: Tạo domain Amazon Elasticsearch Service (Amazon ES) 

    1. Truy cập https://aws.amazon.com và chọn Sign In to the Console.
    2. Ở dưới Analytics, chọn Elasticsearch Service.
    3. Chọn Create a new domain.
    4. Đối với deployment type, chọn Development and testing.
    5. Đối với Elasticsearch version, chọn latest version và sau đó chọn Next.
    6. Nhập tên của domain.
    7. Phía dưới Data nodes, chọn instance typet3.small.elasticsearch với giá trị mặc định của Number of nodes.
    8. Bỏ qua các phần còn lại của cài đặt và chọn Next.
    9. Đối với Network configuration, chọn Public access.
    10. Đối với Fine-grained access control, bỏ chọn Enable fine-grained access control.
    11. Đối với Domain access policy, chọn Custom access policy. Nhập IP address hoặc nhập IAM ARN cho phép truy cập tới domain.
    12. Bỏ qua các phần còn lại của cài đặt và chọn Next.
    13. Bỏ qua các lựa chọn tags và chọn Next.
    14. Xác nhận lại các cấu hình domain và chọn Confirm. Domain mới sẽ tốn khoảng 15-30 phút để khởi tạo, nhưng có thể lâu hơn tuỳ vào cấu hình. Sau khi domain được tạo xong, hãy lưu lại endpoint.
  • Bước 2: Upload dữ liệu lên Amazon ES

    • Cách 1: Upload một document
    • Sử dụng command line
    • curl -XPUT 'domain-endpoint/users/_doc/1' -d '{"id": 1, "userName": "Nguyen Van A", "email": "test@gmail.com"}' -H 'Content-Type: application/json'
    • Sử dụng postman
    • Cách 2: Upload nhiều documents bằng file json, Tạo file users.json với nội dung như sau:
    • { "index" : { "_index": "users", "_id" : "2" } }
      
      {"id": 2, "userName": "Nguyen Van B", "email": "test+1@gmail.com"}
      
      { "index" : { "_index": "users", "_id" : "3" } }
      
      {"id": 3, "userName": "Nguyen Van C", "email": "test+2@gmail.com"}
    • Sử dụng command line
    • curl -XPOST 'domain-endpoint/_bulk' --data-binary @users.json -H 'Content-Type: application/json'
    • Sử dụng postman
  • Bước 3: Tìm kiếm tài liệu trên Amazon ES

    • Tìm kiếm data trong users domain với từ khoá gmail.com
    • Sử dụng command line
    • curl -XGET 'domain-endpoint/users/_search?q=gmail.com&pretty=true'
    • Sử dụng postman
  • Bước 4: Xoá Amazon ES domain

    1. Đăng nhập vào Amazon Elasticsearch Service.
    2. Phía dưới My domains,  chọn domain muốn xoá.
    3. Chọn Actions và sau đó chọn Delete domain.

Tài liệu tham khảo:

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html