यह उत्तर आपको MongoDB, Elasticsearch और AngularJS के साथ एक कार्यात्मक खोज घटक बनाने पर इस ट्यूटोरियल का अनुसरण करने के लिए तैयार करने के लिए पर्याप्त होना चाहिए।
यदि आप एपीआई से डेटा के साथ पहलू खोज का उपयोग करना चाहते हैं तो मैथियासन का बर्डवॉच रेपो कुछ ऐसा है जिसे आप देखना चाहेंगे।
तो यहां बताया गया है कि आप एक नए EC2 Ubuntu 14.04 इंस्टेंस पर NodeJS, एक्सप्रेस ऐप में उपयोग के लिए MongoDB को इंडेक्स करने के लिए सिंगल नोड Elasticsearch "क्लस्टर" कैसे सेट कर सकते हैं।
सुनिश्चित करें कि सब कुछ अद्यतित है।
sudo apt-get update
NodeJS स्थापित करें।
sudo apt-get install nodejs
sudo apt-get install npm
MongoDB स्थापित करें - ये चरण सीधे MongoDB डॉक्स से हैं। वह संस्करण चुनें जिसमें आप सहज हों। मैं v2.4.9 के साथ चिपका हुआ हूं क्योंकि ऐसा लगता है कि यह मोंगोडीबी-रिवर का नवीनतम संस्करण है जो बिना किसी समस्या के समर्थन करता है।
MongoDB सार्वजनिक GPG कुंजी आयात करें।
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
अपने स्रोतों की सूची अपडेट करें।
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
10gen पैकेज प्राप्त करें।
sudo apt-get install mongodb-10gen
फिर यदि आप नवीनतम संस्करण नहीं चाहते हैं तो अपना संस्करण चुनें। यदि आप विंडोज 7 या 8 मशीन पर अपना वातावरण स्थापित कर रहे हैं तो v2.6 से तब तक दूर रहें जब तक कि वे इसे सेवा के रूप में चलाने के साथ कुछ बग्स को दूर नहीं कर देते।
apt-get install mongodb-10gen=2.4.9
जब आप अपडेट करते हैं तो अपने MongoDB इंस्टॉलेशन के संस्करण को टकराने से रोकें।
echo "mongodb-10gen hold" | sudo dpkg --set-selections
MongoDB सेवा प्रारंभ करें।
sudo service mongodb start
आपकी डेटाबेस फ़ाइलें /var/lib/mongo पर डिफ़ॉल्ट हैं और आपकी लॉग फ़ाइलें /var/log/mongo.
मोंगो शेल के माध्यम से एक डेटाबेस बनाएं और उसमें कुछ डमी डेटा डालें।
mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )
अब स्टैंडअलोन MongoDB को प्रतिकृति सेट में बदलने के लिए।
पहले प्रक्रिया को बंद करें।
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
अब हम MongoDB को एक सेवा के रूप में चला रहे हैं, इसलिए जब हम mongod प्रक्रिया को पुनरारंभ करते हैं तो हम कमांड लाइन तर्क में "--replSet rs0" विकल्प में पास नहीं होते हैं। इसके बजाय, हम इसे mongod.conf फ़ाइल में डालते हैं।
vi /etc/mongod.conf
इन पंक्तियों को जोड़ें, अपने डीबी और लॉग पथ के लिए सबबिंग करें।
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
अब रेप्लिका सेट को इनिशियलाइज़ करने के लिए मोंगो शेल को फिर से खोलें।
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.
अब इलास्टिक्स खोज स्थापित करें। मैं इस सहायक सार का अनुसरण कर रहा हूँ।
सुनिश्चित करें कि जावा स्थापित है।
sudo apt-get install openjdk-7-jre-headless -y
जब तक Mongo-River प्लगइन बग v1.2.1 में ठीक नहीं हो जाता, तब तक v1.1.x के साथ बने रहें।
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
सुनिश्चित करें कि /etc/elasticsearch/elasticsearch.yml में निम्नलिखित कॉन्फ़िगरेशन विकल्प सक्षम हैं यदि आप अभी के लिए केवल एक नोड पर विकास कर रहे हैं:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
इलास्टिक्स खोज सेवा शुरू करें।
sudo service elasticsearch start
सत्यापित करें कि यह काम कर रहा है।
curl http://localhost:9200
अगर आप ऐसा कुछ देखते हैं तो आप अच्छे हैं।
{
"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"
}
अब Elasticsearch प्लगइन्स इंस्टॉल करें ताकि यह MongoDB के साथ खेल सके।
bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0
ये दो प्लगइन्स आवश्यक नहीं हैं, लेकिन वे प्रश्नों का परीक्षण करने और आपकी अनुक्रमणिका में परिवर्तनों को देखने के लिए अच्छे हैं।
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
इलास्टिक्स खोज को फिर से शुरू करें।
sudo service elasticsearch restart
अंत में 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"
}
}'
जांचें कि आपकी अनुक्रमणिका इलास्टिक्स खोज में है
curl -XGET http://localhost:9200/_aliases
अपने क्लस्टर स्वास्थ्य की जाँच करें।
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
यह शायद कुछ असाइन न किए गए शार्क के साथ पीला है। हमें Elasticsearch को बताना होगा कि हम किसके साथ काम करना चाहते हैं।
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
क्लस्टर स्वास्थ्य की फिर से जाँच करें। यह अब हरा होना चाहिए।
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
जाओ खेलो।