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, Elaticsearch và AngularJS .
Nếu bạn đang muốn sử dụng tìm kiếm theo 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 xét.
Vì vậy, đây là cách bạn có thể thiết lập một "cụm" Elaticsearch để 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.
Hãy chắc chắn rằng 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 trực tiếp từ tài liệu MongoDB. Chọn bất kỳ phiên bản nào bạn thấy thoải mái. Tôi đang gắn bó với v2.4.9 vì đây dường như là phiên bản mới nhất mà MongoDB-River hỗ trợ mà không gặp sự cố.
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 gần đây 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 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 chặn phiên bản cài đặt MongoDB của bạn bị lỗi khi bạn cập nhật.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
Bắt đầu 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 thành / var / log / mongo.
Tạo một cơ sở dữ liệu thông qua trình vỏ 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 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 qua tùy chọn "--replset rs0" trong đố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 đặt nó trong tệp mongod.conf.
vi /etc/mongod.conf
Thêm các dòng này, thay thế 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ở vỏ mongo một lần nữa để khởi tạo bộ 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 Elaticsearch. Tôi chỉ theo dõi Gist hữu ích này .
Hãy chắc chắn rằng Java đã được cài đặt.
sudo apt-get install openjdk-7-jre-headless -y
Bây giờ hãy gắn bó với v1.1.x 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/elSTERearch/elSTERearch.yml có các tùy chọn cấu hình sau được bật nếu bạn chỉ phát triển trên một nút duy nhất:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Bắt đầu dịch vụ Elaticsearch.
sudo service elasticsearch start
Xác nhận nó đang hoạt động.
curl http://localhost:9200
Nếu bạ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 Elaticsearch để 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 cho việc kiểm tra truy vấn và trực quan hóa các thay đổi đối với các chỉ mục của bạn.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Khởi động lại Elaticsearch.
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 Elaticsearch không
curl -XGET http://localhost:9200/_aliases
Kiểm tra sức khỏe cụm của bạn.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Nó có thể màu vàng với một số mảnh vỡ chưa được gán. Chúng tôi phải nói với Elaticsearch những gì chúng tôi muốn làm việc với.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Kiểm tra sức khỏe cụm một lần nữa. Nó nên có màu xanh bây giờ.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Đi chơi đi.