Hướng dẫn mongodb vs elasticsearch - mongodb vsasticsearch
Giới thiệuXin chào, trong bài viết này mình sẽ trình bày thẳng vào cách setup để đồng bộ dữ liệu luôn, mình sẽ bỏ qua các khái niệm cơ bản vì tất cả đều đã có trên doc rồi. Mình sẽ sử dụng 2 database, thứ nhất là dùng DB chính là Mongodb, còn Elastic chỉ dùng để lưu trữ dữ liệu phục vụ cho mục đích tìm kiếm do một Elastic có một số nhược điểm như không có transaction, CRUD không thể nhanh bằng các loại DB khác do phải đánh lại index. Tool để đồng bộ dữ liệu mình suggest sử dụng monstache hoặc mongoosastic (cho dự án sử dụng nodejs), tuy nhiên mongoosatic có bug nhỏ khi chúng ta đặt tên field là 4 dẫn đến lỗi code khi đồng bộ data, hy vọng họ sớm fix :vTrong bài viết này mình sẽ sử dụng monstache để đồng bộ. Monstache là một tool đồng bộ được viết bằng Go. Monstache cung cấp cho bạn khả năng sử dụng Elasticsearch để thực hiện các tìm kiếm phức tạp và tổng hợp dữ liệu MongoDB của bạn theo thời gian thực một cách nhanh chóng. Cài đặtĐầu tiên các bạn tạo các thư mục và các file như sau:
Chỉnh sửa file 5 để tạo các biến môi trường:
Bây giờ chúng ta sẽ setup 6, trong đây chúng ta sẽ sử dụng multi node, bạn cũng có thể sử dụng single node bằng cách thêm vào 7 dòng sau 8 và bỏ 9, 0, 1, nhưng lưu ý là chỉ nên dùng single node trên môi trường test nhé:
Giải thích một chút, bạn cần kiểm tra memory được phân bổ cho docker trước nhé, ở đây mình set 2 tức 512m cho mỗi node, tốt nhất là docker được phân bổ tối thiếu 4gb.Tiếp theo là phần secure cho ES, chúng ta sẽ sử dụng extension xpack:
Chỉnh sửa file 7, trong file này chúng ta sẽ định nghĩa những instances chúng ta cần tạo certificate
Chỉnh sửa file 8, file này dùng để chạy container tạo certificates cho ES:
Okay, sau khi sửa xong, chúng ta sẽ tiến hành chạy docker dể tạo certificate bằng lệnh sau: Tiếp theo là tạo basic auth để có thể truy cập được vào REST Api của ES:
bạn lưu lại các account vừa được tạo, và sửa lại 5
Như vậy là chúng ta đã xong việc setup docker, tiếp theo là config monstache
Trong config trên mình có sử dụng filter và scrip, cho nên sẽ cần tạo file 0 và 1:
0Các bạn có thể code trực tiếp vào file config bằng cách sau: 1Done, bây giờ chúng ta sẽ chạy monstache trong docker: 2bạn có thể kiểm tra log trong thư mục 2 nhé, chừng nào có dòng 3 có nghĩa là bạn đã đồng bộ dữ liệu cũ xong, dữ liệu mới sẽ được sync realtime từ Mongodb sang ES. 3Tổng kếtTrên đây là cách setup Elasticsearch multi node và Monstache để đồng bộ dữ liệu từ mongodb, hy vọng sẽ hữu ích cho bạn. Happy coding !!! |