MongoDB के साथ एलिटिक्स खोज का उपयोग कैसे करें?


152

मैं कई ब्लॉगों और साइटों के माध्यम से गया हूँ, जो मोंटेबीडी में इंडेक्स कलेक्शंस के लिए एलाटोसर्च को कॉन्फ़िगर करने के बारे में हैं, लेकिन उनमें से कोई भी सीधा नहीं था।

कृपया मुझे इलास्टिसर्च को स्थापित करने के लिए चरण प्रक्रिया द्वारा एक चरण समझाएं, जिसमें शामिल होना चाहिए:

  • विन्यास
  • ब्राउज़र में चलाएं

मैं व्यक्त .js के साथ Node.js का उपयोग कर रहा हूं, इसलिए कृपया तदनुसार सहायता करें।


4
नोट: नदियाँ
वंचित

जवाबों:


287

यह उत्तर आपको मोंगोबीडी, एलेस्टिक्स खोज और एंगुलरजेएस के साथ एक कार्यात्मक खोज घटक के निर्माण पर इस ट्यूटोरियल का पालन करने के लिए पर्याप्त होना चाहिए ।

यदि आप एपीआई से डेटा के साथ मुखर खोज का उपयोग करना चाहते हैं तो मैथियस का बर्डवॉच रेपो एक ऐसी चीज है जिसे आप देखना चाहते हैं।

तो यहाँ है कि कैसे आप एक नोड नोडिटिक्स "क्लस्टर" को एनओडीजेएस में उपयोग के लिए इंडेक्स मोंगोबीडी को इंडेक्स कर सकते हैं, एक ताजा ईसी 2 उबंटू 14.04 उदाहरण पर एक्सप्रेस ऐप।

सुनिश्चित करें कि सब कुछ अद्यतित है।

sudo apt-get update

NodeJS स्थापित करें।

sudo apt-get install nodejs
sudo apt-get install npm

MongoDB स्थापित करें - ये चरण MongoDB डॉक्स से सीधे हैं। जो भी संस्करण आप के साथ सहज हो उसे चुनें। मैं v2.4.9 के साथ चिपका रहा हूं क्योंकि यह सबसे हालिया संस्करण MongoDB-River प्रतीत हो रहा है मुद्दों के बिना समर्थन करता है।

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

अपने db और लॉग पथ के लिए इन पंक्तियों को जोड़ें

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.

अब Elasticsearch स्थापित करें। मैं सिर्फ इस मददगार जिस्ट का अनुसरण कर रहा हूं ।

सुनिश्चित करें कि जावा स्थापित है।

sudo apt-get install openjdk-7-jre-headless -y

मोंटो-रिवर प्लगइन बग 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

Elasticsearch सेवा प्रारंभ करें।

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'

यह शायद कुछ अनसाइनड शार्क के साथ पीला है। हमें एलेस्टिक्स को बताना होगा कि हम किसके साथ काम करना चाहते हैं।

curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'

फिर से क्लस्टर स्वास्थ्य की जाँच करें। यह अब हरा होना चाहिए।

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

खेलने जाओ।


@ Duck5auce का कोई भी अंदाजा नहीं है कि एक्सप्रेस (जेएस) और ब्राउज़र में जेड (ejs) टेम्पलेट का उपयोग करके परिणाम कैसे प्राप्त करें (लोचदार खोज परिणाम) उदाहरण के लिए app.get ('खोज = "Google"), फ़ंक्शन (req) , रिज़ोल्यूशन) {}); और अद्भुत जवाब के लिए धन्यवाद
bibin david

@bibindavid मैं इस संसाधन की जाँच करूँगा। यह आपको एक सर्वर साइड ES क्लाइंट मॉड्यूल बनाने के माध्यम से चलता है जिसे आप दो अन्य कस्टम मॉड्यूल के माध्यम से फ़िल्टर किए गए प्रश्नों को धक्का देते हैं। डेटा का रेंडरिंग अभी भी क्लाइंट पर संभाला जाता है, लेकिन यह एक अच्छा शुरुआती बिंदु होना चाहिए। sahan.me/posts/dabbling-in-elasticsearch-part-2-with-nodejs Github repo यहाँ स्थित है: github.com/sahan/sahan.github.io/tree/master/resources/…
डोनाल्ड गैरी

क्या आप मुझे बता सकते हैं कि कौन सा मूंगोसिस्टिक्स बेहतर होगा या अलग तरह से मूंगोज़ और इलास्टिक्स खोज मॉड्यूल का उपयोग करना होगा ????
सुधांशु गौर

7
यह duck5auce के उत्कृष्ट जवाब के बाद से एक साल हो गया है। लगता है कि लोग अब वास्तविक समय में ElasticSearch के साथ एक MongoDB क्लस्टर को सिंक्रनाइज़ करने के लिए 10gens [mongo-कनेक्टर] [1] का उपयोग कर रहे हैं। यह MongoDB oplog को पूंछता है। [१]: github.com/10gen-labs/mongo-connector/wiki/…
एंड्रयू बेट्स

8
@ duck5auce कृपया इस उत्तर को अपडेट करें, यह दिनांकित है। नदी को हटा दिया गया है
tsturzl

35

नदी का उपयोग मुद्दों को प्रस्तुत कर सकता है जब आपका ऑपरेशन शुरू होता है। भारी ऑपरेशन के तहत नदी एक टन मेमोरी का उपयोग करेगी। मैं अपने खुद के इलास्टिक्स खोज मॉडल को लागू करने की सलाह देता हूं, या यदि आप मानसून का उपयोग कर रहे हैं, तो आप अपने इलास्टिक्स खोज मॉडल का निर्माण कर सकते हैं या उस मोंगोसिस्टिक्स का उपयोग कर सकते हैं जो अनिवार्य रूप से आपके लिए ऐसा करता है।

Mongodb नदी का एक और नुकसान यह है कि आप mongodb 2.4.x शाखा, और ElasticSearch का उपयोग करके फंस जाएंगे। आप यह पता लगाना शुरू कर देंगे कि आप वास्तव में बहुत अच्छी विशेषताओं को याद कर रहे हैं, और मोंगोडब नदी परियोजना सिर्फ एक उपयोगी उत्पाद को तेजी से स्थिर रखने के लिए पर्याप्त उत्पादन नहीं करती है। कहा कि Mongodb नदी निश्चित रूप से कुछ ऐसा नहीं है जिसके साथ मैं उत्पादन में जाऊंगा। यह अपने मूल्य से अधिक समस्याओं का ढेर है। यह भारी भार के तहत बेतरतीब ढंग से लिखना छोड़ देगा, यह बहुत सारी मेमोरी का उपभोग करेगा, और इसकी कोई सेटिंग नहीं है। इसके अतिरिक्त, नदी वास्तविक समय में अपडेट नहीं करती है, यह मोंगोडब से ओप्लॉग पढ़ती है, और यह मेरे अनुभव में 5 मिनट तक अपडेट में देरी कर सकती है।

हमें हाल ही में अपनी परियोजना के एक बड़े हिस्से को फिर से लिखना पड़ा, क्योंकि इसकी साप्ताहिक घटना यह है कि कुछ इलास्टिक खोज के साथ कुछ गलत हो जाता है। हम यहां तक ​​कि एक देव ऑप्स सलाहकार को किराए पर लेने के लिए गए थे, जो भी सहमत है कि नदी से दूर जाने के लिए सबसे अच्छा है।

अपडेट करें: एलियस्टीसर्च-मोंगोडब-नदी अब ES v1.4.0 और मोंगोडब v2.6.x का समर्थन करती है। हालाँकि, आप अभी भी भारी डालने / अपडेट संचालन पर प्रदर्शन की समस्याओं में भाग लेंगे, क्योंकि यह प्लगइन सिंक करने के लिए मोंगोडब के ऑप्लॉग को पढ़ने की कोशिश करेगा। यदि लॉक (या कुंडी) अनलॉक करने के बाद से बहुत सारे ऑपरेशन हैं, तो आप अपने इलास्टिक्स खोज सर्वर पर अत्यधिक मेमोरी उपयोग को नोटिस करेंगे। यदि आप एक बड़े ऑपरेशन की योजना बनाते हैं, तो नदी एक अच्छा विकल्प नहीं है। ElasticSearch के डेवलपर्स अभी भी आपको नदी का उपयोग करने के बजाय अपनी भाषा के लिए क्लाइंट लाइब्रेरी का उपयोग करके अपने एपीआई के साथ सीधे संवाद करके अपने स्वयं के सूचकांक का प्रबंधन करने की सलाह देते हैं। यह वास्तव में नदी का उद्देश्य नहीं है। ट्विटर-नदी इस बात का एक बड़ा उदाहरण है कि किस तरह से नदी का इस्तेमाल किया जाना चाहिए। यह अनिवार्य रूप से बाहरी स्रोतों से डेटा स्रोत का एक शानदार तरीका है,

यह भी विचार करें कि मोंगोडेब-नदी संस्करण में पीछे रह जाती है, क्योंकि एलास्टिक खोज संगठन द्वारा इसका रखरखाव नहीं किया जाता है, इसका रखरखाव तीसरे पक्ष द्वारा होता है। V1.0 की रिलीज के बाद लंबे समय तक विकास v0.90 शाखा पर अटका रहा, और जब v1.0 के लिए एक संस्करण जारी किया गया, तो यह तब तक स्थिर नहीं था जब तक कि इलास्टिसर्च ने v1.3.0 जारी नहीं किया। मोंगोडब संस्करण भी पीछे छूट जाते हैं। जब आप रास्ते में कई बहुप्रतीक्षित सुविधाओं के साथ, विशेष रूप से इस तरह के भारी विकास के तहत इलास्टिक खोज के साथ प्रत्येक के बाद के संस्करण में जाने की तलाश में हैं, तो आप खुद को एक तंग जगह पर पा सकते हैं। नवीनतम इलास्टिक खोज पर बने रहना बहुत महत्वपूर्ण रहा है क्योंकि हम अपने उत्पाद के मुख्य भाग के रूप में अपनी खोज की कार्यक्षमता में लगातार सुधार पर बहुत अधिक भरोसा करते हैं।

यदि आप इसे स्वयं करते हैं, तो आप सभी को एक बेहतर उत्पाद मिलेगा। यह मुश्किल नहीं है। अपने कोड में प्रबंधित करने के लिए इसका सिर्फ एक और डेटाबेस है, और इसे बड़ी रिफैक्टिंग के बिना आसानी से अपने मौजूदा मॉडल में गिराया जा सकता है।


क्या आपके पास एक लिंक या एक सलाह है जहाँ मैं प्रकाशन सूचकांक में लेखक की जानकारी को अनुक्रमणित कर सकता हूं क्योंकि प्रकाशन और लेखक 2 संग्रह में हैं और संदर्भ और संदर्भ के माध्यम से लिंक कर रहे हैं
Marcel Djaman

कुछ पृष्ठभूमि के लिए इस पढ़ें elastic.co/guide/en/elasticsearch/guide/current/relations.html
tsturzl

इस व्याख्या आप कैसे शामिल हो / डेटा संबंधित elastic.co/guide/en/elasticsearch/guide/current/...
tsturzl

1
इलास्टिसर्च एक संबंधपरक डीबी के बजाय एक दस्तावेज़ भंडारण डीबी है। डेटा को इलास्टिक्सर्च में संबंधित करना असंभव नहीं है, लेकिन विकृति की संभावना अधिक होती है, लेकिन अतिरिक्त तर्क के साथ प्रबंधित किया जा सकता है (प्लगइन्स हैं)। डेटा से संबंधित सबसे आम तरीका है, जैसा कि ऊपर दिए गए लिंक में बताया गया है, रिश्तेदार दस्तावेज़ में एक आईडी संदर्भ संग्रहीत करना है। सुनिश्चित करें कि आप इस आईडी को उस फ़ील्ड में संग्रहीत करते हैं जो सेट है not_analyzed, अन्यथा आपको इसके लिए क्वेरी करने में समस्या होगी, जिस तरह से विश्लेषण किया गया फ़ील्ड टोकन हो।
tsturzl

4

मुझे मानगो-कनेक्टर उपयोगी लगा। यह फार्म मोंगो लैब्स (MongoDB इंक) है और अब इसे एलेस्टिक्स खोज 2.x के साथ प्रयोग किया जा सकता है

इलास्टिक 2.x डॉक्टर प्रबंधक: https://github.com/mongodb-labs/elastic2-doc-manager

mongo-कनेक्टर एक MongoDB क्लस्टर से एक या एक से अधिक लक्ष्य प्रणालियों, जैसे Solr, Elasticsearch, या किसी अन्य MongoDB क्लस्टर के लिए एक पाइपलाइन बनाता है। यह MongoDB में डेटा को लक्ष्य के साथ सिंक्रनाइज़ करता है और फिर MongoDB oplog को पूंछता है, वास्तविक समय में MongoDB में संचालन के साथ रहता है। इसका परीक्षण पायथन 2.6, 2.7, और 3.3+ के साथ किया गया है। विस्तृत दस्तावेज विकि पर उपलब्ध है।

https://github.com/mongodb-labs/mongo-connector https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20Elasticstearch


4

नदी एक अच्छा समाधान है जब आप लगभग वास्तविक समय तुल्यकालन और सामान्य समाधान करना चाहते हैं।

यदि आपके पास पहले से ही MongoDB में डेटा है और इसे बहुत आसानी से "एक-शॉट" की तरह एलेस्टिक्स पर शिप करना चाहते हैं, तो आप मेरे पैकेज को Node.js https://github.com/itemsapi/elasticbulk में आज़मा सकते हैं ।

यह Node.js स्ट्रीम का उपयोग कर रहा है ताकि आप उन सभी चीज़ों से डेटा आयात कर सकें जो स्ट्रीम का समर्थन कर रही हैं (जैसे MongoDB, PostgreSQL, MySQL, JSON फ़ाइलें, आदि)

MongoDB के लिए उदाहरण के लिए Elasticsearch:

पैकेज स्थापित करें:

npm install elasticbulk
npm install mongoose
npm install bluebird

स्क्रिप्ट बनाएं। script.js:

const elasticbulk = require('elasticbulk');
const mongoose = require('mongoose');
const Promise = require('bluebird');
mongoose.connect('mongodb://localhost/your_database_name', {
  useMongoClient: true
});

mongoose.Promise = Promise;

var Page = mongoose.model('Page', new mongoose.Schema({
  title: String,
  categories: Array
}), 'your_collection_name');

// stream query 
var stream = Page.find({
}, {title: 1, _id: 0, categories: 1}).limit(1500000).skip(0).batchSize(500).stream();

elasticbulk.import(stream, {
  index: 'my_index_name',
  type: 'my_type_name',
  host: 'localhost:9200',
})
.then(function(res) {
  console.log('Importing finished');
})

अपना डेटा शिप करें:

node script.js

यह बहुत तेज़ नहीं है लेकिन यह लाखों रिकॉर्ड्स (धाराओं के लिए धन्यवाद) के लिए काम कर रहा है।


3

यहाँ mongodb 3.0 पर यह कैसे करें। मैंने इस अच्छे ब्लॉग का उपयोग किया

  1. मोंगोडब स्थापित करें।
  2. डेटा निर्देशिकाएँ बनाएँ:
$ mkdir RANDOM_PATH/node1
$ mkdir RANDOM_PATH/node2> 
$ mkdir RANDOM_PATH/node3
  1. मोंगॉड उदाहरण शुरू करें
$ mongod --replSet test --port 27021 --dbpath node1
$ mongod --replSet test --port 27022 --dbpath node2
$ mongod --replSet test --port 27023 --dbpath node3
  1. प्रतिकृति सेट कॉन्फ़िगर करें:
$ mongo
config = {_id: 'test', members: [ {_id: 0, host: 'localhost:27021'}, {_id: 1, host: 'localhost:27022'}]};    
rs.initiate(config);
  1. एलिस्टिक्स खोज स्थापित करना:
a. Download and unzip the [latest Elasticsearch][2] distribution

b. Run bin/elasticsearch to start the es server.

c. Run curl -XGET http://localhost:9200/ to confirm it is working.
  1. MongoDB नदी को स्थापित और कॉन्फ़िगर करना:

$ बिन / प्लगइन - com .github.richardwilly98.elasticsearch / elasticsearch-river-mongodb

$ बिन / प्लगइन - एलेस्टिक्स खोज / इलास्टिसर्च-मैपर-संलग्नक

  1. "नदी" और सूचकांक बनाएँ:

curl -XPUT ' http: // localhost: 8080 / _river / mongodb / _meta ' -d '{"type": "mongodb", "mongodb": {"db": "mydb", "collection": "foo" }, "इंडेक्स": {"नाम": "नाम", "टाइप": "रैंडम"}}}

  1. ब्राउज़र पर परीक्षण:

    http: // localhost: 9200 / _search q = घर


6
ElasticSearch ने नदी प्लगइन्स को हटा दिया है। यह निश्चित रूप से खोज सूचकांक बनाए रखने का सबसे अच्छा तरीका नहीं है।
tsturzl

3

यहाँ मुझे आपके MongoDB डेटा को Elasticsearch में स्थानांतरित करने के लिए एक और अच्छा विकल्प मिला। एक गो डेमॉन जो मोंगोडब को रियलटाइम में इलास्टिक्स खोज के लिए सिंक करता है। इसके मठ। पर उपलब्ध है: मठ

कॉन्फ़िगर और इसका उपयोग करने के लिए प्रारंभिक सेटप के नीचे।

चरण 1:

C:\Program Files\MongoDB\Server\4.0\bin>mongod --smallfiles --oplogSize 50 --replSet test

चरण 2 :

C:\Program Files\MongoDB\Server\4.0\bin>mongo

C:\Program Files\MongoDB\Server\4.0\bin>mongo
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
Server has startup warnings:
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten]
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten]
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2019-01-18T16:56:44.931+0530 I CONTROL  [initandlisten]
MongoDB Enterprise test:PRIMARY>

चरण 3: प्रतिकृति की पुष्टि करें।

MongoDB Enterprise test:PRIMARY> rs.status();
{
        "set" : "test",
        "date" : ISODate("2019-01-18T11:39:00.380Z"),
        "myState" : 1,
        "term" : NumberLong(2),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                },
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1547811537, 1),
                        "t" : NumberLong(2)
                }
        },
        "lastStableCheckpointTimestamp" : Timestamp(1547811517, 1),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "localhost:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 736,
                        "optime" : {
                                "ts" : Timestamp(1547811537, 1),
                                "t" : NumberLong(2)
                        },
                        "optimeDate" : ISODate("2019-01-18T11:38:57Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1547810805, 1),
                        "electionDate" : ISODate("2019-01-18T11:26:45Z"),
                        "configVersion" : 1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                }
        ],
        "ok" : 1,
        "operationTime" : Timestamp(1547811537, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1547811537, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}
MongoDB Enterprise test:PRIMARY>

चरण 4. "डाउनलोड करें https://github.com/rwynn/monstache/releases " करें । डाउनलोड को अनज़िप करें और अपने प्लेटफ़ॉर्म के लिए फ़ोल्डर में पथ को शामिल करने के लिए अपने पैट चर को समायोजित करें। Cmd पर जाएं और टाइप करें"monstache -v" # 4.13.1 करें। Monstache अपने विन्यास के लिए TOML प्रारूप का उपयोग करता है। Config.toml नामक माइग्रेशन के लिए फ़ाइल कॉन्फ़िगर करें

चरण 5।

मेरा config.toml ->

mongo-url = "mongodb://127.0.0.1:27017/?replicaSet=test"
elasticsearch-urls = ["http://localhost:9200"]

direct-read-namespaces = [ "admin.users" ]

gzip = true
stats = true
index-stats = true

elasticsearch-max-conns = 4
elasticsearch-max-seconds = 5
elasticsearch-max-bytes = 8000000 

dropped-collections = false
dropped-databases = false

resume = true
resume-write-unsafe = true
resume-name = "default"
index-files = false
file-highlighting = false
verbose = true
exit-after-direct-reads = false

index-as-update=true
index-oplog-time=true

चरण 6।

D:\15-1-19>monstache -f config.toml

मॉन्स्टैच चल रहा है ...

एलिस्टिक्स खोज पर माइग्रेटेड डेटा की पुष्टि करें

मोंगो में रिकॉर्ड जोड़ें

मॉन्स्टैच ने इस घटना को कैप्चर किया और डेटा को इलास्टिसर्चर्च में स्थानांतरित कर दिया


3

चूंकि मोंगो-कनेक्टर अब मृत दिखाई देता है, इसलिए मेरी कंपनी ने एलिटिक्स खोज के लिए आउटपुट में मानगो परिवर्तन धाराओं का उपयोग करने के लिए एक उपकरण बनाने का फैसला किया।

हमारे प्रारंभिक परिणाम आशाजनक दिखते हैं। आप इसे https://github.com/electionsexperts/mongo-stream पर देख सकते हैं । हम अभी भी विकास में शुरुआती हैं, और सुझावों या योगदान का स्वागत करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.