Jawaban ini seharusnya cukup untuk menyiapkan Anda mengikuti tutorial tentang Membangun komponen pencarian fungsional dengan MongoDB, Elasticsearch, dan AngularJS.
Jika Anda ingin menggunakan penelusuran segi dengan data dari API, maka Repo BirdWatch Matthiasn adalah sesuatu yang mungkin ingin Anda lihat.
Jadi, inilah cara Anda dapat menyiapkan "cluster" Elasticsearch node tunggal untuk mengindeks MongoDB untuk digunakan dalam aplikasi NodeJS, Express pada instance EC2 Ubuntu 14.04 yang baru.
Pastikan semuanya mutakhir.
sudo apt-get update
Instal NodeJS.
sudo apt-get install nodejs
sudo apt-get install npm
Instal MongoDB - Langkah-langkah ini langsung dari dokumen MongoDB. Pilih versi apa pun yang Anda sukai. Saya tetap menggunakan v2.4.9 karena tampaknya ini adalah versi terbaru yang didukung MongoDB-River tanpa masalah.
Impor Kunci GPG publik MongoDB.
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 di mesin windows 7 atau 8, jauhi v2.6 sampai mereka mengatasi beberapa bug dengan menjalankannya sebagai layanan.
apt-get install mongodb-10gen=2.4.9
Cegah versi penginstalan MongoDB Anda terganggu saat Anda memperbarui.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
Mulai layanan MongoDB.
sudo service mongodb start
File database Anda default ke /var/lib/mongo dan file log Anda ke /var/log/mongo.
Buat database melalui mongo shell dan masukkan 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 Mengonversi MongoDB mandiri menjadi Set Replika.
Matikan dulu prosesnya.
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
Sekarang kami menjalankan MongoDB sebagai layanan, jadi kami tidak meneruskan opsi "--replSet rs0" di argumen baris perintah saat kami memulai ulang proses mongod. Sebagai gantinya, kami meletakkannya di file mongod.conf.
vi /etc/mongod.conf
Tambahkan baris ini, subbing untuk db dan jalur log Anda.
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
Sekarang buka shell mongo 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 yang bermanfaat ini.
Pastikan Java telah terinstal.
sudo apt-get install openjdk-7-jre-headless -y
Tetap menggunakan v1.1.x untuk saat ini hingga bug plugin Mongo-River 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 pada satu node untuk saat ini:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Mulai layanan Elasticsearch.
sudo service elasticsearch start
Pastikan 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 agar dapat 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 diperlukan tetapi bagus untuk menguji kueri dan memvisualisasikan perubahan pada indeks Anda.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Mulai ulang Elasticsearch.
sudo service elasticsearch restart
Terakhir, 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. Kami harus memberi tahu Elasticsearch apa yang ingin kami kerjakan.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Periksa kesehatan cluster lagi. Seharusnya sekarang hijau.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Pergi bermain.