Search performance: MongoDB vs Elasticsearch

Quang Lê
3 min readSep 27, 2020

--

#1 Search engines: Elasticsearch
#1 Document stores: MongoDB

Image Ref: https://logz.io/blog/elasticsearch-vs-mongodb/

Trong lúc đi tìm hiểu về Elasticsearch, mình loay hoay một câu hỏi “Ứng dụng đang sử dụng db là Mongo, vẫn có thể search xịn, chạy phà phà dư xăng, độ search bằng cách đánh index luôn. Vậy khi nào cần sử dụng Elasticsearch?” Data của hệ thống ngày càng nhiều? Nhiều cỡ bao nhiêu? Thôi mình dựng thử một demo nhỏ để so sánh tốc độ vậy.

1. Chuẩn bị data

Mình sử dụng tập public data Danh sách giá cả thị trường. Tập data có 2000 records được lưu dạng csv, sau đó convert về json. Cuối cùng dựng model Product, đánh index theo tên và bắt đầu ghi vào MongoDB.

Product Schema
Records and Indexes

2000 là số records được insert ; 2 indexes đã đánh: _Id (mặc định) và ten

Làm tương tự cho ES, mình đi dựng index với tên product và insert tập 2000 record. Sau đó đi check lại số lượng có match 2000 hay không.

Ref: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/bulk_examples.html

Index and Insert data
Số lượng record

2/ Test tốc độ

Tiếp theo, mình chuẩn bị 2 api search tương ứng cho Mongo và ES. Cùng một giá trị tìm kiếm, cùng tập 2000 record, mình nhận ra tốc độ search của Elasticsearch nhanh hơn xấp xỉ 20 lần so với MongoDB.

MongDB:

MongoDB time response — 300ms

Elasticsearch:

Elasticsearch time response — 15ms

Dù kết quả ra sao, MongoDB vốn sinh ra không mang sứ mệnh là search như Elasticsearch, xứng đáng là ưu tiên hàng đầu để cân được các loại dự án khác nhau. Nhưng nếu gia đình có điều kiện thì đúng Elasticsearch là một lựa chọn cool ngầu.

Nguồn tham khảo:

DB Engine: https://db-engines.com/en/system/Elasticsearch%3BMongoDB

Elastic doc: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html

Chân thành cảm ơn mọi người đã đọc bài viết của mình.

*** Bài chia sẻ cũng còn nhiều thiếu sót, mình rất mong nhận được góp ý từ mọi người. ^^

--

--

Quang Lê
Quang Lê

No responses yet