Jawaban ini seharusnya cukup untuk membuat Anda mengatur untuk mengikuti tutorial ini tentang Membangun komponen pencarian fungsional dengan MongoDB, Elasticsearch, dan AngularJS .
Jika Anda ingin menggunakan pencarian faceted dengan data dari API maka Repo BirdWatch Matthiasn adalah sesuatu yang mungkin ingin Anda lihat.
Jadi, inilah cara Anda dapat menyiapkan satu simpul Elasticsearch "cluster" untuk mengindeks MongoDB untuk digunakan dalam aplikasi NodeJS, Express pada contoh EC2 Ubuntu 14.04 yang baru.
Pastikan semuanya sudah terbaru.
sudo apt-get update
Instal NodeJS.
sudo apt-get install nodejs
sudo apt-get install npm
Instal MongoDB - Langkah-langkah ini langsung dari MongoDB docs. Pilih versi apa pun yang Anda sukai. Saya bertahan dengan v2.4.9 karena tampaknya itu adalah versi terbaru dukungan MongoDB-River tanpa masalah.
Impor Kunci GPG MongoDB publik.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Perbarui daftar sumber Anda.
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Dapatkan paket 10gen.
sudo apt-get install mongodb-10gen
Kemudian pilih versi Anda jika Anda tidak menginginkan yang terbaru. Jika Anda mengatur lingkungan Anda pada mesin windows 7 atau 8 tinggal jauh dari v2.6 sampai mereka menyelesaikan beberapa bug dengan menjalankannya sebagai layanan.
apt-get install mongodb-10gen=2.4.9
Cegah agar versi instalasi MongoDB Anda tidak terbentur saat Anda memperbarui.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
Mulai layanan MongoDB.
sudo service mongodb start
File database Anda secara default adalah / var / lib / mongo dan file log Anda ke / var / log / mongo.
Buat database melalui mongo shell dan dorong beberapa data dummy ke dalamnya.
mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )
Sekarang untuk Mengkonversi MongoDB mandiri menjadi Set Replika .
Pertama, Matikan proses.
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
Sekarang kita menjalankan MongoDB sebagai layanan, jadi kita tidak meneruskan opsi "--replSet rs0" di argumen baris perintah ketika kita me-restart proses mongod. Sebagai gantinya, kami memasukkannya ke file mongod.conf.
vi /etc/mongod.conf
Tambahkan baris ini, subbing untuk jalur db dan log Anda.
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
Sekarang buka mongo shell lagi untuk menginisialisasi set replika.
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.
Sekarang instal Elasticsearch. Saya hanya mengikuti intisari bermanfaat ini .
Pastikan Java sudah diinstal.
sudo apt-get install openjdk-7-jre-headless -y
Tetap menggunakan v1.1.x untuk saat ini sampai bug plugin Sungai Mongo diperbaiki di 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
Pastikan /etc/elasticsearch/elasticsearch.yml mengaktifkan opsi konfigurasi berikut jika Anda hanya mengembangkan satu node untuk saat ini:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Mulai layanan Elasticsearch.
sudo service elasticsearch start
Verifikasi itu berfungsi.
curl http://localhost:9200
Jika Anda melihat sesuatu seperti ini maka Anda baik-baik saja.
{
"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"
}
Sekarang instal plugin Elasticsearch sehingga bisa bermain dengan MongoDB.
bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0
Kedua plugin ini tidak perlu tetapi mereka bagus untuk menguji kueri dan memvisualisasikan perubahan pada indeks Anda.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Mulai kembali Elasticsearch.
sudo service elasticsearch restart
Akhirnya indeks koleksi dari 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"
}
}'
Periksa apakah indeks Anda ada di Elasticsearch
curl -XGET http://localhost:9200/_aliases
Periksa kesehatan cluster Anda.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Mungkin berwarna kuning dengan beberapa pecahan yang belum ditetapkan. Kita harus memberi tahu Elasticsearch apa yang ingin kita kerjakan.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Periksa kesehatan cluster lagi. Seharusnya berwarna hijau sekarang.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Pergi bermain.