2013-02-11 39 views
11

Tôi khá mới đối với cả hai mongodb và node.js nhưng gần đây đã có mọi thứ để làm việc tốt cho tôi cho đến khi tôi đạt đến điểm mà tôi cần để thêm một tìm kiếm văn bản đầy đủ vào trang web của tôi. Từ nghiên cứu của tôi, tôi đã tìm ra rằng Elasticsearch sẽ phù hợp, nhưng tôi không thể tìm ra chính xác cách làm cho nó hoạt động với node.js và mongodb. Tôi hiện đang sử dụng Heroku và MongoLab để lưu trữ ứng dụng của tôi. Đây là câu hỏi của tôi.Làm cách nào để tìm kiếm đàn hồi để chơi với MongoDb và node.js?

  1. Làm cách nào để lưu trữ Elasticsearch?
  2. Làm cách nào để làm cho tất cả dữ liệu mongo của tôi có sẵn cho elasticsearch tôi có sử dụng một con sông hay tôi tự chèn và xóa tất cả dữ liệu?

    Tôi đã tìm thấy thứ gì đó này river nhưng tôi không hoàn toàn chắc chắn cách thực hiện điều này xảy ra tự động và nơi lưu trữ nó.

  3. Làm cách nào để truy vấn Elasticsearch từ node.js? Có gói nào cho phép điều này không?

Edit:

Câu hỏi 2 thực sự là những gì tôi đang phải vật lộn với. Tôi cũng đã bao gồm câu hỏi 1 và 3 để giúp mọi người mới tham gia chủ đề và đến từ google.

+1

Không vi phạm nhưng điều này có vẻ như một tập hợp các câu hỏi có câu trả lời dễ dàng bằng cách đọc trang đầu tiên của tài liệu để sử dụng ElasticSearch với MongoDB; Tôi có nghĩa là "Làm thế nào để tôi lưu trữ Elasticsearch?" ... – Sammaye

+0

Có câu hỏi 2 có lẽ là người duy nhất khó trả lời tôi đã thêm hai cái còn lại chỉ để giúp người khác tìm cách bắt đầu. –

+0

Tôi sử dụng ElasticSearch 0.9.11 trên bản sao EC2 lớn + bản sao MongoDB 2.4.9 được đặt trên hai phiên bản EC2 bộ nhớ cao và nó hoạt động tuyệt vời. Rất nhiều chèn, rất nhiều cập nhật, và rất nhiều lần xóa mỗi giây và không có cách nào bạn có thể làm nó trơn tru và liền mạch như sông MongoDB mà bạn đã đề cập bằng cách sử dụng bất kỳ thứ gì khác. Nó trông sau oplog của bạn. Btw, bằng tay ?! Bạn đùa phải không?Nếu bạn có tài liệu tĩnh khá nhiều thì chỉ cần ngồi ở MongoDB không bận tâm làm cho kết nối vừa tự động chèn chỉ mục vào ElasticSearch. Con sông giúp tự động hóa các giao dịch này. – Maziyar

Trả lời

8

1) hoặc của riêng máy chủ/VM/bất cứ điều gì .. hoặc với một dịch vụ lưu trữ như https://searchbox.io/

2) bạn có thể tạo một kịch bản để chỉ mục dữ liệu mới dữ liệu và sau đó chỉ số hiện tại của bạn khi tạo ra nó, hoặc sử dụng một con sông để lập chỉ mục cơ sở dữ liệu hiện tại của bạn.

3) ElasticSearch là một HTTP API đơn giản, bạn có thể đưa ra yêu cầu riêng của bạn bằng cách sử dụng 'http' mô-đun hoặc đơn giản hóa nó với một cái gì đó giống như https://github.com/mikeal/request

bạn cũng có thể sử dụng một thư viện của bên thứ 3 như https://github.com/phillro/node-elasticsearch-client

1

Searchly.com (Aka SearchBox.io) đã giới thiệu một trình thu thập tính năng mới bao gồm trình thu thập thông tin MongoDB. Nó tìm nạp dữ liệu từ một bộ sưu tập nhất định và đồng bộ hóa định kỳ với ElasticSearch. Kiểm tra http://www.searchly.com/documentation/crawler-beta/

0
  1. Bạn có thể lưu trữ trên máy chủ của riêng bạn hoặc sử dụng dịch vụ aws elasticsearch hoặc sử dụng đám mây đàn hồi do elasticsearch cung cấp.
  2. Hãy thử một trong ba giải pháp sau: - i) Thử sử dụng mongoosastic. Gói NPM ii) Sử dụng đầu nối mongo. iii) tập lệnh python để lập chỉ mục dữ liệu cho elasticsearch
  3. elasticsearch-js. Thư viện máy khách javascript
Các vấn đề liên quan