Bu yanıt , MongoDB, Elasticsearch ve AngularJS ile işlevsel bir arama bileşeni oluşturma hakkındaki bu öğreticiyi izlemenizi sağlamak için yeterli olmalıdır .
Bir API'den alınan verilerle yönlü aramayı kullanmak istiyorsanız, Matthiasn'in BirdWatch Repo'su bakmak isteyebileceğiniz bir şeydir.
Böylece, MongoDB'yi yeni bir EC2 Ubuntu 14.04 örneğinde bir NodeJS, Express uygulamasında kullanmak üzere endekslemek için tek bir düğüm Elasticsearch "kümesi" ayarlayabileceksiniz.
Her şeyin güncel olduğundan emin olun.
sudo apt-get update
NodeJS'yi yükleyin.
sudo apt-get install nodejs
sudo apt-get install npm
MongoDB'yi yükleyin - Bu adımlar doğrudan MongoDB belgelerinden yapılır. Hangi sürümü rahat ederseniz seçin. Ben v2.4.9 ile yapışıyorum çünkü MongoDB-River sorunsuz bir şekilde desteklediği en son sürüm gibi görünüyor .
MongoDB genel GPG Anahtarını içe aktarın.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Kaynak listenizi güncelleyin.
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
10gen paketini alın.
sudo apt-get install mongodb-10gen
Son sürümü istemiyorsanız sürümünüzü seçin. Ortamınızı bir Windows 7 veya 8 makinesine kuruyorsanız, hizmet olarak çalıştırırken bazı hatalar çalışana kadar v2.6'dan uzak durun.
apt-get install mongodb-10gen=2.4.9
Güncelleme sırasında MongoDB kurulumunuzun sürümünün engellenmesini önleyin.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
MongoDB hizmetini başlatın.
sudo service mongodb start
Veritabanı dosyalarınız varsayılan olarak / var / lib / mongo ve günlük dosyalarınız / var / log / mongo olarak ayarlanmıştır.
Mongo kabuğundan bir veritabanı oluşturun ve kukla verileri ona aktarın.
mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )
Şimdi bağımsız MongoDB çoğaltma kümesine dönüştürmek için .
İlk önce işlemi kapatın.
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
Şimdi MongoDB'yi bir hizmet olarak çalıştırıyoruz, bu nedenle mongod işlemini yeniden başlattığımızda komut satırı bağımsız değişkeninde "--replSet rs0" seçeneğini iletmiyoruz. Bunun yerine, mongod.conf dosyasına koyduk.
vi /etc/mongod.conf
Bu satırları ekleyin, db ve log yollarınız için subbing.
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
Şimdi kopya kümesini başlatmak için mongo kabuğunu tekrar açın.
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.
Şimdi Elasticsearch'ü yükleyin. Ben sadece bu yardımcı Gist'i takip ediyorum .
Java'nın kurulu olduğundan emin olun.
sudo apt-get install openjdk-7-jre-headless -y
Mongo-River eklenti hatası v1.2.1'de düzeltilene kadar v1.1.x ile devam edin.
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
Şimdilik yalnızca tek bir düğümde geliştiriyorsanız /etc/elasticsearch/elasticsearch.yml dosyasında aşağıdaki yapılandırma seçeneklerinin etkinleştirildiğinden emin olun:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Elasticsearch hizmetini başlatın.
sudo service elasticsearch start
Çalıştığını doğrulayın.
curl http://localhost:9200
Eğer böyle bir şey görürsen iyisin.
{
"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"
}
Şimdi MonsticsDB ile oynayabilmesi için Elasticsearch eklentilerini kurun.
bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0
Bu iki eklenti gerekli değildir, ancak sorguları test etmek ve dizinlerinizdeki değişiklikleri görselleştirmek için iyidir.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Elasticsearch'ü yeniden başlatın.
sudo service elasticsearch restart
Sonunda bir koleksiyonu MongoDB'den indeksleyin.
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"
}
}'
Dizininizin Elasticsearch'te olup olmadığını kontrol edin
curl -XGET http://localhost:9200/_aliases
Küme sağlığınızı kontrol edin.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Atanmamış parçalarla muhtemelen sarıdır. Elasticsearch'e ne ile çalışmak istediğimizi söylemeliyiz.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Küme sağlığını tekrar kontrol edin. Şimdi yeşil olmalı.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Git oyna.