2017-09-21 3 views
0

Ich arbeite gerade an einem Projekt, wo unsere Hauptdatenbank ist mongodb und für die Suche verwenden wir elasticsearch. Wir haben Daten in mongodb durch eine Java-Anwendung eingefügt. Und wir verwendeten das River-Plugin, um Daten zu synchronisieren. Bisher haben wir die Daten zwischen mongodb und elasticsearch manuell durch Ausführen der unten genannten Shellscript-Dateien synchronisiert. (Setup.sh & & bash.sh)Automate mongodb und elasticsearch sync

//setup.sh 
curl -XPOST http://localhost:9200/classdata -d @setup.json 

//setup.json 
{ 
"settings": { 
"number_of_shards": 1, 
"number_of_replicas": 0 
}, 
"mappings": { 
"classdata": { 
    "properties": { 
    "className": { 
     "type": "string" 
    }, 
"jarID": { 
     "index": "not_analyzed", 
     "type": "string" 
    }, 
    "jarFileName": { 
     "index": "not_analyzed", 
     "type": "string" 
    }, 
    "dependencies": { 
     "properties": { 
     "methodSignature": { 
      "type": "string" 
     }, 
     "dependedntClass": { 
      "type": "string" 
     } 
     } 
    } 
    } 
} 
} 
} 

//bash.sh 
curl -XPUT "localhost:9200/_river/classdata/_meta" -d ' 
{ 
"type": "mongodb", 
"mongodb": { 
"servers": [ 
    { "host": "127.0.0.1", "port": 27017 } 
], 
"options": { "secondary_read_preference": true }, 
"db": "E", 
"collection": "ClassData" 
}, 
"index": { 
"name": "classdata", 
"type": "classdata" 
} 
}' 

Aber jetzt unsere Anforderung geändert hat. Jetzt müssen wir den Prozess automatisieren, nachdem wir Daten in mongodb eingefügt haben, müssen wir automatisch Daten zwischen elasticsearch und mongodb synchronisieren. Ich habe keine Ahnung, wie das geht. Wenn jemand diesen Prozess automatisieren kann, bitte hilf mir.

+0

Warum Sie keine Methode erstellen, diese sh-Dateien von Ihrem Java-Programm auszuführen, nach dem Einfügen Ihre Daten in Mongodb? –

+0

Das ist nicht möglich Ich denke, dass jedes Betriebssystem die Ausführung von Shellscript-Dateien nicht unterstützt, richtig? –

Antwort

0

MongoConnector Plugin unterstützt die Datensynchronisierung zwischen MongoDB und Elastic Search.

1) Mongo Connector in Ihrem Server installieren.

`pip install mongo-connector` 

2) Installieren Sie Doc Manager basierend auf dem Zielsystem. Es gibt verschiedene Implementierungen für Doc Manager, die auf dem Zielsystem basieren. Installieren Sie den, der Elastic Search unterstützt, und insbesondere die Version, die Sie haben. Eg)

pip install 'mongo-connector[elastic5]' 

3) Starten Sie Mongo Stecker mit Konfigurationen der Quelle (mongodb) und Zielsysteme. ZB)

mongo-connector -m <mongodb server hostname>:<replica set port> -t <replication endpoint URL, e.g. http://localhost:8983/solr> -d <name of doc manager> 

Jetzt werden die Daten automatisch zwischen den beiden Systemen synchronisiert.

Weitere Informationen Verwenden Sie die folgenden Links,

https://www.mongodb.com/blog/post/introducing-mongo-connector

https://github.com/mongodb-labs/mongo-connector

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

+0

Vielen Dank für Ihre Antwort, ich wundere mich, Connector ist sehr ähnlich wie River-Plugin, und es hat nicht mein Problem gelöst, den Prozess zu automatisieren, muss ich diese Befehle manuell ausführen, richtig? Ich wollte eine Möglichkeit, den Synchronisierungsprozess zu automatisieren. Vielen Dank. –

+0

Hallo Rayan. Der Befehl muss einmal ausgeführt werden, um den Prozess zu starten, nach dem die Synchronisierung automatisch erfolgt. – samo