Tôi không thấy bất kỳ lý do nào để sử dụng ElasticSearch kết hợp với MongoDb, chỉ cần sử dụng ElasticSearch làm lưu trữ tài liệu riêng biệt cho các tài liệu, phải được tìm kiếm. Và có, bạn thậm chí có thể là toàn bộ db. Tất nhiên nó phụ thuộc vào mô hình miền của bạn và các yếu tố khác.
Nếu bạn không cần bắt nguồn, tìm kiếm mờ, tìm kiếm ký tự đại diện phức tạp, bạn có thể thực hiện tìm kiếm với mongoDb. Khi tài liệu mới được chèn vào, hãy chia nhỏ nó thành các từ trong chữ thường, và thêm vào mảng "từ" ví dụ. Sau đó, bạn có thể thực hiện yêu cầu tìm kiếm đối với mảng này với regex
. Không phải bạn có thể sử dụng tùy chọn I
(bỏ qua trường hợp) trong regex này và bạn chỉ có thể tìm kiếm một ký tự đại diện LIKE%
(hoặc không có ký tự đại diện), nếu không tìm kiếm sẽ không sử dụng chỉ mục mongoDb.
Một lựa chọn hơn - bạn có thể thử để tìm river cho MongoDB
Một lựa chọn khác - là sử dụng Lucene
nếu bạn đang sử dụng Java. Có lẽ bạn sẽ có thể mở rộng lớp Directory
, theo cách đó, Lucene sẽ lưu trữ chỉ mục trong MongoDb thay vì hệ thống tệp hoặc RAM. Tôi đã không thực hiện bất kỳ nghiên cứu nào trong lĩnh vực này, nhưng tôi nghĩ rằng có thể
Cảm ơn Umar, chúng tôi sẽ cung cấp cho bạn một approcah thử – stew
Trong khi điều này là một lựa chọn, có đến một điểm mà trọng lượng của dữ liệu là đủ lớn để làm cho regex tìm kiếm một sự lựa chọn không hiệu quả. Đó là trên thực tế tại sao các chỉ mục tìm kiếm tồn tại. Họ bổ sung và tăng cường lưu trữ liên tục cho mục đích rõ ràng là giữ các hoạt động tìm kiếm tốn kém khỏi cơ sở dữ liệu. –
Ngay cả với regex mongodDb có thể sử dụng chỉ mục như tôi đã đề cập trong câu trả lời, nó phụ thuộc vào loại regex – Anton