- vừa được xem lúc

Bạn nên sử dụng Elasticsearch trong ứng dụng Ruby On Rails như thế nào?

0 0 80

Người đăng: Truong Van Cong Nhat

Theo Viblo Asia

Elasticsearch là một công cụ phân tích và mã nguồn mở mạnh mẽ và linh hoạt, phân tán, theo thời gian thực. Đó là tiêu chuẩn vàng trong công nghệ tìm kiếm. Nó được xây dựng dựa trên thư viện Apache Lucene và cung cấp một giao diện RESTful HTTP mạnh mẽ để truy vấn và lập chỉ mục một lượng lớn dữ liệu có cấu trúc. Ngay từ đầu, nó cung cấp một công cụ tìm kiếm hiệu quả, có thể mở rộng và mạnh mẽ. Đặc điểm chính của Elasticsearch là nó được phân phối ở cốt lõi của nó, có nghĩa là bạn có thể dễ dàng mở rộng quy mô theo chiều ngang để dự phòng hoặc cho vấn đề hiệu suất.

Elasticsearch cũng có thể được sử dụng như một công cụ lưu trữ dữ liệu, nhưng nó có một số nhược điểm:

  • Trong Elasticsearch, dữ liệu có sẵn "gần thời gian thực". Có nghĩa là, khi bạn gửi một nhận xét cho một bài đăng và sau đó làm mới trang, nó có thể sẽ không hiển thị vì chỉ mục vẫn đang cập nhật.
  • Elasticsearch không cung cấp bất kỳ hệ thống kiểm soát truy cập hoặc bảo mật nội bộ nào. Bạn sẽ cần một tường lửa để bảo vệ ES khỏi sự truy cập từ bên ngoài.
  • Ngoài ra còn có hỗ trợ hạn chế cho tính toán nâng cao ở phía cơ sở dữ liệu.
  • Sao lưu không được ưu tiên nhiều như các giải pháp lưu trữ dữ liệu khác, mặc dù ES được phân phối và tương đối ổn định. Nếu Elasticsearch là nơi lưu trữ dữ liệu chính của bạn, bạn có thể sẽ phải suy nghĩ lại về nó.

Những điều bạn cần biết về Elasticsearch:

Elasticsearch không phải hướng đối tượng mà là hướng tài liệu (document-oriented). Nó sử dụng các document để lưu trữ toàn bộ các đối tượng của nó. Các document này được lập chỉ mục để có thể tìm kiếm được. Ở đây, một document thuộc về một loại, trong khi một loại thuộc về một chỉ mục. Mỗi chỉ mục ES có thể được chia thành nhiều phần được gọi là các shard. Khi dung lượng lưu trữ cần thiết của bạn vượt quá khả năng của một nút hoặc máy chủ, điều này sẽ được thực hiện. Nó cũng có thể được sử dụng để tăng hiệu suất của cluster bằng cách song song hóa các hoạt động giữa các shard.

Thời điểm tạo chỉ mục, số lượng primary shard được cố định. Về cơ bản, điều này xác định lượng dữ liệu tối đa được lưu trữ trong chỉ mục của bạn, vì mỗi nút bị ràng buộc bởi số lượng CPU, RAM và I/Os mà nó có thể sở hữu để phù hợp với ít nhất một shard. Bạn chỉ được phép thay đổi số lượng replica shard (bản sao của primary shard) sau khi chỉ mục đã được tạo, mặc dù điều này chỉ ảnh hưởng đến thông lượng của cluster của bạn chứ không ảnh hưởng đến khả năng lưu trữ dữ liệu thực tế.

Bạn có thực sự cần Elasticsearch?

Thông thường, vấn đề bạn đang cố gắng giải quyết có thể được giải quyết dễ dàng hơn rất nhiều với một số truy vấn SQL nâng cao và có lẽ là một số chỉ mục mới. Nói chung có hai trường hợp sử dụng Elasticsearch có ý nghĩa đó là: tìm kiếm toàn văn bản và để chuẩn hóa dữ liệu phức tạp.

Chúng ta thường cố gắng chuẩn hóa dữ liệu của mình để khớp với các model của chúng ta. Nhưng chúng ta có thể gặp phải một số vấn đề về hiệu suất khi thực hiện việc này khi truy vấn trên các bảng chuẩn hóa. Việc sử dụng công nghệ tìm kiếm như Elasticsearch giúp việc chuẩn hóa dữ liệu đó và truy xuất dữ liệu nhanh hơn nhiều.

Nếu bạn cần Elasticsearch, hướng dẫn bên dưới sẽ giúp bạn bắt đầu:

  • Làm theo hướng dẫn cài đặt do Elasticsearch cung cấp.
  • Nếu đây là chỉ mục Elasticsearch đầu tiên mà bạn thêm vào dự án, thì bạn sẽ phải cài đặt elasticsearch-rails và elasticsearch-model gems.
  • Để định cấu hình gem, bạn sẽ cần file initializer để thiết lập Elasticsearch Client để các model sử dụng.
  • Thiết lập chỉ mục trên model khi dự án rails đã sẵn sàng.
  • Bước đầu tiên rõ ràng khi thiết lập chỉ mục là định cấu hình chỉ mục trên model bạn muốn tìm kiếm. Tuy nhiên, cách tiếp cận được đề xuất là đóng gói logic lập chỉ mục vào một ActiveSupport::Concern sau đó include vào model của bạn. Hãy nhớ rằng, ở đây bạn chỉ muốn lập chỉ mục các trường / quan hệ mà bạn yêu cầu lập chỉ mục tìm kiếm. Bạn càng lập chỉ mục nhiều trường, chỉ mục sẽ càng lớn trong Elasticsearch. Điều này có nghĩa là bạn sẽ cần phần cứng mạnh hơn và chỉ mục càng lớn thì thời gian truy vấn tìm kiếm càng lâu. Tiếp theo, quyết định có bao nhiêu shard sẽ giữ dữ liệu. Một primary shard là đủ nếu nếu bạn không cần xử lí một lượng lớn dữ liệu.
  • Khi bạn đã xác định chỉ mục, đã đến lúc bắt đầu truy vấn. Hãy nhớ rằng, trước khi có thể bắt đầu truy vấn, bạn cần lập chỉ mục một số dữ liệu. elasticsearch-model gem đã cung cấp cho chúng ta một giao diện tìm kiếm mạnh mẽ cho API RESTful Elasticsearch. Bạn có thể truy vấn với bất kỳ điểm cuối API nào được đề cập trong tài liệu Elasticsearch.
  • Chỉ cần include Elasticsearch::Model::Callbacks, có thể thiết lập Callbacks tự động. Có thể tùy chỉnh các Callback dễ dàng và bạn có thể kiểm soát khi nào bạn thực sự muốn các chỉ mục được cập nhật.
  • Cuối cùng, hãy dành thời gian để viết một bản cách import nhanh hơn. Tính năng import được tích hợp không hiệu quả lắm.

Nguồn: Amit Ashwini

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 222

- vừa được xem lúc

Rails Memoization

Memoization is a process that can be used to speed up rails methods. It caches the results of methods that do time-consuming work, work that only needs to be done once. Here is an example. Example.

0 0 48

- vừa được xem lúc

Tại sao Rails lại dùng cả Webpack lẫn Sprocket?

Khi Rails 6 được ra mắt, có thể bạn đã từng tự hỏi. WTF, sao Webpack đã được add vào rồi, mà Sprocket vẫn tồn tại thế kia . Chẳng phải Webpack và Sprocket được dùng để giải quyết chung một công việc hay sao. Hoặc cả đây:.

0 0 59

- vừa được xem lúc

Form object pattern trong rails

1.Mở đầu.

0 0 111

- vừa được xem lúc

Sử dụng Twilio để gửi SMS trong ứng dụng Ruby on Rails

Ngoài cách xác nhận tài khoản hay gửi thông báo bằng email thì hôm nay mình sẽ hướng dẫn các bạn 1 cách nữa là thông qua SMS/Voice. Công cụ sử dụng sẽ là gem Twilio. Installation. Để cài đặt bằng Bundler, hãy lấy phiên bản mới nhất:.

0 0 67

- vừa được xem lúc

Floating-point error và cách giải quyết trong Ruby on Rails

Khi làm việc với việc tính toán số, nhất là với tài chính hoặc tiền, độ chính xác là vô cùng quan trọng. Thậm chỉ dù là sai số quá ít cũng gây ra độ lệnh lớn khi số tiền đó càng lớn.

0 0 42