MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để sử dụng Elasticsearch với MongoDB?

Câu trả lời này đủ giúp bạn thiết lập để làm theo hướng dẫn này về Xây dựng thành phần tìm kiếm chức năng với MongoDB, Elasticsearch và AngularJS.

Nếu bạn đang muốn sử dụng tính năng tìm kiếm theo từng khía cạnh với dữ liệu từ API thì BirdWatch Repo của Matthiasn là thứ bạn có thể muốn xem.

Vì vậy, đây là cách bạn có thể thiết lập một "cụm" nút Elasticsearch để lập chỉ mục MongoDB để sử dụng trong ứng dụng NodeJS, Express trên phiên bản EC2 Ubuntu 14.04 mới.

Đảm bảo mọi thứ đều được cập nhật.

sudo apt-get update

Cài đặt NodeJS.

sudo apt-get install nodejs
sudo apt-get install npm

Cài đặt MongoDB - Các bước này thực hiện trực tiếp từ tài liệu MongoDB, hãy chọn bất kỳ phiên bản nào bạn cảm thấy thoải mái. Tôi gắn bó với v2.4.9 vì nó có vẻ là phiên bản gần đây nhất mà MongoDB-River hỗ trợ mà không gặp vấn đề gì.

Nhập Khóa GPG công khai MongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Cập nhật danh sách nguồn của bạn.

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Nhận gói 10gen.

sudo apt-get install mongodb-10gen

Sau đó, chọn phiên bản của bạn nếu bạn không muốn phiên bản mới nhất. Nếu bạn đang thiết lập môi trường của mình trên máy tính chạy windows 7 hoặc 8, hãy tránh xa v2.6 cho đến khi chúng khắc phục được một số lỗi khi chạy nó như một dịch vụ.

apt-get install mongodb-10gen=2.4.9

Ngăn phiên bản cài đặt MongoDB của bạn bị xáo trộn khi bạn cập nhật.

echo "mongodb-10gen hold" | sudo dpkg --set-selections

Khởi động dịch vụ MongoDB.

sudo service mongodb start

Các tệp cơ sở dữ liệu của bạn mặc định là / var / lib / mongo và các tệp nhật ký của bạn là / var / log / mongo.

Tạo cơ sở dữ liệu thông qua trình bao mongo và đẩy một số dữ liệu giả vào đó.

mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )

Bây giờ để chuyển đổi MongoDB độc lập thành Bộ bản sao.

Đầu tiên, hãy tắt quá trình.

mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()

Bây giờ chúng tôi đang chạy MongoDB như một dịch vụ, vì vậy chúng tôi không chuyển tùy chọn "--replSet rs0" vào đối số dòng lệnh khi chúng tôi khởi động lại quy trình mongod. Thay vào đó, chúng tôi đưa nó vào tệp mongod.conf.

vi /etc/mongod.conf

Thêm các dòng này, phụ cho đường dẫn db và nhật ký của bạn.

replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG

Bây giờ, hãy mở lại mongo shell để khởi tạo tập hợp bản sao.

mongo DATABASE_NAME
config = { "_id" : "rs0", "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017" } ] }
rs.initiate(config)
rs.slaveOk() // allows read operations to run on secondary members.

Bây giờ cài đặt Elasticsearch. Tôi chỉ đang theo dõi Ý kiến ​​hữu ích này.

Đảm bảo rằng Java đã được cài đặt.

sudo apt-get install openjdk-7-jre-headless -y

Hãy gắn bó với v1.1.x ngay bây giờ cho đến khi lỗi plugin Mongo-River được sửa trong v1.2.1.

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.deb
sudo dpkg -i elasticsearch-1.1.1.deb

curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
sudo rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch

Đảm bảo /etc/elasticsearch/elasticsearch.yml đã bật các tùy chọn cấu hình sau nếu hiện tại bạn chỉ đang phát triển trên một nút duy nhất:

cluster.name: "MY_CLUSTER_NAME"
node.local: true

Khởi động dịch vụ Elasticsearch.

sudo service elasticsearch start

Xác minh rằng nó đang hoạt động.

curl http://localhost:9200

Nếu bạn nhìn thấy một cái gì đó như thế này thì bạn tốt.

{
  "status" : 200,
  "name" : "Chi Demon",
  "version" : {
    "number" : "1.1.2",
    "build_hash" : "e511f7b28b77c4d99175905fac65bffbf4c80cf7",
    "build_timestamp" : "2014-05-22T12:27:39Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

Bây giờ hãy cài đặt các plugin Elasticsearch để nó có thể chơi với MongoDB.

bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0

Hai plugin này không cần thiết nhưng chúng tốt để kiểm tra các truy vấn và hiển thị các thay đổi đối với chỉ mục của bạn.

bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk

Khởi động lại Elasticsearch.

sudo service elasticsearch restart

Cuối cùng lập chỉ mục một bộ sưu tập từ MongoDB.

curl -XPUT localhost:9200/_river/DATABASE_NAME/_meta -d '{
  "type": "mongodb",
  "mongodb": {
    "servers": [
      { "host": "127.0.0.1", "port": 27017 }
    ],
    "db": "DATABASE_NAME",
    "collection": "ACTUAL_COLLECTION_NAME",
    "options": { "secondary_read_preference": true },
    "gridfs": false
  },
  "index": {
    "name": "ARBITRARY INDEX NAME",
    "type": "ARBITRARY TYPE NAME"
  }
}'

Kiểm tra xem chỉ mục của bạn có trong Elasticsearch

không
curl -XGET http://localhost:9200/_aliases

Kiểm tra tình trạng cụm của bạn.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Nó có thể là màu vàng với một số mảnh chưa được chỉ định. Chúng tôi phải cho Elasticsearch biết những gì chúng tôi muốn làm việc.

curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'

Kiểm tra lại tình trạng cụm. Bây giờ nó sẽ có màu xanh lục.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Chơi đi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để truy vấn các đối tượng lồng nhau?

  2. MongoDB Node findone làm thế nào để xử lý không có kết quả?

  3. Các cụm MongoDB được phân bổ theo địa lý trên AWS ở khu vực EU

  4. MongoDB, MapReduce và sắp xếp

  5. MongoDB $ exp