Wie verwende ich Elasticsearch mit MongoDB?

152

Ich habe viele Blogs und Websites zum Konfigurieren von Elasticsearch für MongoDB durchgesehen, um Sammlungen in MongoDB zu indizieren, aber keine davon war einfach.

Bitte erläutern Sie mir einen schrittweisen Prozess zur Installation von elasticsearch, der Folgendes umfassen sollte:

  • Aufbau
  • im Browser ausführen

Ich verwende Node.js mit express.js, bitte helfen Sie entsprechend.

Bibin David
quelle
4
Hinweis: Flüsse sind veraltet
abdul qayyum

Antworten:

287

Diese Antwort sollte ausreichen, damit Sie dieses Lernprogramm zum Erstellen einer funktionalen Suchkomponente mit MongoDB, Elasticsearch und AngularJS befolgen können .

Wenn Sie die facettierte Suche mit Daten aus einer API verwenden möchten, sollten Sie sich Matthiasns BirdWatch Repo ansehen.

So können Sie einen Elasticsearch-Cluster mit einem einzelnen Knoten einrichten, um MongoDB für die Verwendung in einer NodeJS, Express-App auf einer neuen EC2 Ubuntu 14.04-Instanz zu indizieren.

Stellen Sie sicher, dass alles auf dem neuesten Stand ist.

sudo apt-get update

Installieren Sie NodeJS.

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

MongoDB installieren - Diese Schritte stammen direkt aus MongoDB-Dokumenten. Wählen Sie die Version, mit der Sie vertraut sind. Ich bleibe bei v2.4.9, weil es die neueste Version zu sein scheint, die MongoDB-River ohne Probleme unterstützt.

Importieren Sie den öffentlichen MongoDB-GPG-Schlüssel.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Aktualisieren Sie Ihre Quellenliste.

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Holen Sie sich das 10gen-Paket.

sudo apt-get install mongodb-10gen

Wählen Sie dann Ihre Version aus, wenn Sie nicht die neueste Version möchten. Wenn Sie Ihre Umgebung auf einem Windows 7- oder Windows 8-Computer einrichten, halten Sie sich von Version 2.6 fern, bis einige Fehler bei der Ausführung als Dienst behoben sind.

apt-get install mongodb-10gen=2.4.9

Verhindern Sie, dass die Version Ihrer MongoDB-Installation beim Aktualisieren beschädigt wird.

echo "mongodb-10gen hold" | sudo dpkg --set-selections

Starten Sie den MongoDB-Dienst.

sudo service mongodb start

Ihre Datenbankdateien sind standardmäßig / var / lib / mongo und Ihre Protokolldateien / var / log / mongo.

Erstellen Sie eine Datenbank über die Mongo-Shell und verschieben Sie einige Dummy-Daten hinein.

mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )

Nun zum Konvertieren des eigenständigen MongoDB in eine Replica Set .

Beenden Sie zuerst den Prozess.

mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()

Jetzt führen wir MongoDB als Dienst aus, sodass wir die Option "--replSet rs0" im Befehlszeilenargument nicht übergeben, wenn wir den Mongod-Prozess neu starten. Stattdessen fügen wir es in die Datei mongod.conf ein.

vi /etc/mongod.conf

Fügen Sie diese Zeilen hinzu und geben Sie Ihre Datenbank- und Protokollpfade ein.

replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG

Öffnen Sie nun die Mongo-Shell erneut, um das Replikatset zu initialisieren.

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.

Installieren Sie nun Elasticsearch. Ich folge nur diesem hilfreichen Kern .

Stellen Sie sicher, dass Java installiert ist.

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

Bleiben Sie vorerst bei v1.1.x, bis der Fehler im Mongo-River-Plugin in v1.2.1 behoben ist.

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

Stellen Sie sicher, dass in /etc/elasticsearch/elasticsearch.yml die folgenden Konfigurationsoptionen aktiviert sind, wenn Sie derzeit nur auf einem einzelnen Knoten entwickeln:

cluster.name: "MY_CLUSTER_NAME"
node.local: true

Starten Sie den Elasticsearch-Dienst.

sudo service elasticsearch start

Überprüfen Sie, ob es funktioniert.

curl http://localhost:9200

Wenn Sie so etwas sehen, sind Sie gut.

{
  "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"
}

Installieren Sie nun die Elasticsearch-Plugins, damit sie mit MongoDB abgespielt werden können.

bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0

Diese beiden Plugins sind nicht erforderlich, eignen sich jedoch zum Testen von Abfragen und zum Visualisieren von Änderungen an Ihren Indizes.

bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk

Starten Sie Elasticsearch neu.

sudo service elasticsearch restart

Indexieren Sie schließlich eine Sammlung aus 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"
  }
}'

Überprüfen Sie, ob sich Ihr Index in Elasticsearch befindet

curl -XGET http://localhost:9200/_aliases

Überprüfen Sie den Zustand Ihres Clusters.

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

Es ist wahrscheinlich gelb mit einigen nicht zugewiesenen Scherben. Wir müssen Elasticsearch mitteilen, mit was wir arbeiten möchten.

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

Überprüfen Sie den Clusterzustand erneut. Es sollte jetzt grün sein.

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

Geh spielen.

Donald Gary
quelle
@ Duck5auce haben eine Vorstellung davon, wie das Ergebnis (das elastische Suchergebnis) von express.js abgerufen und im Browser entweder mithilfe einer Jade- oder einer EJS-Vorlage angezeigt werden kann, z. B. wie app.get ('search = "google"', function (req , res) {}); und danke für die wundervolle Antwort
Bibin David
@bibindavid Ich würde diese Ressource überprüfen. Es führt Sie durch die Erstellung eines serverseitigen ES-Client-Moduls, durch das Sie gefilterte Abfragen über zwei andere benutzerdefinierte Module übertragen. Das Rendern der Daten wird weiterhin auf dem Client ausgeführt, sollte jedoch ein angemessener Ausgangspunkt sein. sahan.me/posts/dabbling-in-elasticsearch-part-2-with-nodejs Github-Repo hier: github.com/sahan/sahan.github.io/tree/master/resources/…
Donald Gary
Kannst du mir bitte sagen, welches besser mongoosastisch ist oder wenn du das Mose- und Elasticsearch-Modul anders verwendest?
Sudhanshu Gaur
7
Es ist ein Jahr her, seit duck5auces ausgezeichnete Antwort. Denken Sie, die Leute verwenden jetzt 10gens [mongo-connector] [1], um einen MongoDB-Cluster in Echtzeit mit ElasticSearch zu synchronisieren. Es verfolgt das MongoDB-Oplog. [1]: github.com/10gen-labs/mongo-connector/wiki/…
Andrew Betts
8
@ duck5auce Bitte aktualisiere diese Antwort, sie ist veraltet. Fluss wurde veraltet
tsturzl
35

Die Verwendung von River kann Probleme verursachen, wenn Ihr Betrieb skaliert. River wird bei starker Beanspruchung eine Menge Speicher verbrauchen. Ich empfehle, Ihre eigenen Elasticsearch-Modelle zu implementieren. Wenn Sie Mungo verwenden, können Sie Ihre Elasticsearch-Modelle direkt darin einbauen oder Mongoosastic verwenden, was dies im Wesentlichen für Sie erledigt.

Ein weiterer Nachteil von Mongodb River ist, dass Sie mit mongodb 2.4.x branch und ElasticSearch 0.90.x nicht weiterkommen. Sie werden feststellen, dass Sie viele wirklich nette Funktionen verpassen, und das Mongodb River-Projekt produziert einfach nicht schnell genug ein brauchbares Produkt, um stabil zu bleiben. Das heißt, Mongodb River ist definitiv nichts, mit dem ich in Produktion gehen würde. Es hat mehr Probleme aufgeworfen als es wert ist. Unter starker Last wird das Schreiben zufällig gelöscht, es wird viel Speicher verbraucht, und es gibt keine Einstellung, um dies zu begrenzen. Außerdem wird River nicht in Echtzeit aktualisiert, sondern liest Oplogs von Mongodb, und dies kann nach meiner Erfahrung Aktualisierungen um bis zu 5 Minuten verzögern.

Wir mussten kürzlich einen großen Teil unseres Projekts neu schreiben, da es wöchentlich vorkommt, dass bei ElasticSearch etwas schief geht. Wir waren sogar so weit gegangen, einen Dev Ops-Berater einzustellen, der auch zustimmt, dass es am besten ist, sich von River zu entfernen.

AKTUALISIEREN: Elasticsearch-mongodb-river unterstützt jetzt ES v1.4.0 und mongodb v2.6.x. Bei umfangreichen Einfüge- / Aktualisierungsvorgängen treten jedoch wahrscheinlich immer noch Leistungsprobleme auf, da dieses Plugin versucht, die Oplogs von Mongodb zu lesen, um sie zu synchronisieren. Wenn es viele Operationen gibt, seit die Sperre (oder eher die Verriegelung) entsperrt ist, werden Sie eine extrem hohe Speichernutzung auf Ihrem Elasticsearch-Server feststellen. Wenn Sie einen großen Betrieb planen, ist der Fluss keine gute Option. Die Entwickler von ElasticSearch empfehlen Ihnen weiterhin, Ihre eigenen Indizes zu verwalten, indem Sie direkt mit ihrer API über die Clientbibliothek für Ihre Sprache kommunizieren, anstatt River zu verwenden. Dies ist nicht wirklich der Zweck des Flusses. Twitter-River ist ein großartiges Beispiel dafür, wie River verwendet werden sollte. Es ist im Wesentlichen eine großartige Möglichkeit, Daten von externen Quellen zu beziehen.

Bedenken Sie auch, dass der Mongodb-Fluss in der Version zurückfällt, da er nicht von der ElasticSearch Organization, sondern von einem Dritten verwaltet wird. Die Entwicklung blieb lange nach der Veröffentlichung von v1.0 auf dem Zweig v0.90 hängen, und als eine Version für v1.0 veröffentlicht wurde, war sie erst stabil, als elasticsearch v1.3.0 veröffentlichte. Mongodb-Versionen fallen ebenfalls zurück. Möglicherweise befinden Sie sich in einer schwierigen Situation, wenn Sie zu einer späteren Version wechseln möchten, insbesondere mit ElasticSearch, das sich in einer so intensiven Entwicklung befindet und viele sehr erwartete Funktionen auf dem Weg ist. Es war sehr wichtig, auf dem neuesten Stand von ElasticSearch zu bleiben, da wir uns stark darauf verlassen, unsere Suchfunktionalität als Kernbestandteil unseres Produkts ständig zu verbessern.

Alles in allem erhalten Sie wahrscheinlich ein besseres Produkt, wenn Sie es selbst tun. Es ist nicht so schwierig. Es ist nur eine weitere Datenbank, die Sie in Ihrem Code verwalten können, und sie kann ohne größere Umgestaltungen problemlos in Ihre vorhandenen Modelle eingefügt werden.

tsturzl
quelle
Haben Sie einen Link oder einen Rat, wo ich dh Autoreninformationen in Publikationsindex indizieren kann, da Publikation und Autor in 2 Sammlungen sind und Link über Referenz und Referenz
Marcel Djaman
Lesen Sie dies für einige Hintergrundinformationen elastic.co/guide/en/elasticsearch/guide/current/relations.html
tsturzl
Dies würde erklären, wie Sie Daten elastisch
tsturzl
1
Elasticsearch ist eher eine Dokumentenspeicher-Datenbank als eine relationale. Es ist nicht unmöglich, Daten in Elasticsearch in Beziehung zu setzen, aber es ist wahrscheinlicher, dass eine Denormalisierung auftritt, die jedoch mit zusätzlicher Logik verwaltet werden kann (es gibt Plugins). Die gebräuchlichste Methode, Daten als Status im obigen Link in Beziehung zu setzen, besteht darin, eine ID-Referenz im entsprechenden Dokument zu speichern. Stellen Sie sicher, dass Sie diese ID in einem Feld speichern, das auf eingestellt not_analyzedist. Andernfalls können Sie sie nicht abfragen. Gehen Sie dazu vor, wie analysierte Felder mit einem Token versehen werden.
tsturzl
4

Ich fand Mongo-Stecker nützlich. Es ist von Mongo Labs (MongoDB Inc.) und kann jetzt mit Elasticsearch 2.x verwendet werden

Elastic 2.x Doc Manager: https://github.com/mongodb-labs/elastic2-doc-manager

mongo-connector erstellt eine Pipeline von einem MongoDB-Cluster zu einem oder mehreren Zielsystemen wie Solr, Elasticsearch oder einem anderen MongoDB-Cluster. Es synchronisiert Daten in MongoDB mit dem Ziel und beendet dann das MongoDB-Oplog, um die Operationen in MongoDB in Echtzeit zu verfolgen. Es wurde mit Python 2.6, 2.7 und 3.3+ getestet. Eine ausführliche Dokumentation finden Sie im Wiki.

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

Lokendra Chauhan
quelle
4

River ist eine gute Lösung, wenn Sie eine nahezu Echtzeitsynchronisation und eine allgemeine Lösung wünschen.

Wenn Sie bereits Daten in MongoDB haben und diese sehr einfach wie "One-Shot" an Elasticsearch senden möchten, können Sie mein Paket in Node.js https://github.com/itemsapi/elasticbulk testen .

Es werden Node.js-Streams verwendet, sodass Sie Daten aus allen unterstützenden Streams importieren können (z. B. MongoDB-, PostgreSQL-, MySQL-, JSON-Dateien usw.).

Beispiel für MongoDB to Elasticsearch:

Pakete installieren:

npm install elasticbulk
npm install mongoose
npm install bluebird

Skript erstellen dh 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');
})

Versenden Sie Ihre Daten:

node script.js

Es ist nicht extrem schnell, aber es funktioniert für Millionen von Datensätzen (dank Streams).


quelle
3

Hier erfahren Sie, wie Sie dies auf Mongodb 3.0 tun. Ich habe diesen schönen Blog benutzt

  1. Installieren Sie mongodb.
  2. Datenverzeichnisse erstellen:
$ mkdir RANDOM_PATH/node1
$ mkdir RANDOM_PATH/node2> 
$ mkdir RANDOM_PATH/node3
  1. Starten Sie Mongod-Instanzen
$ mongod --replSet test --port 27021 --dbpath node1
$ mongod --replSet test --port 27022 --dbpath node2
$ mongod --replSet test --port 27023 --dbpath node3
  1. Konfigurieren Sie das Replikatset:
$ mongo
config = {_id: 'test', members: [ {_id: 0, host: 'localhost:27021'}, {_id: 1, host: 'localhost:27022'}]};    
rs.initiate(config);
  1. Elasticsearch installieren:
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. Installieren und Konfigurieren des MongoDB River:

$ bin / plugin --install com.github.richardwilly98.elasticsearch / elasticsearch-river-mongodb

$ bin / plugin --installiere elasticsearch / elasticsearch-mapper-attachments

  1. Erstellen Sie den „Fluss“ und den Index:

curl -XPUT ' http: // localhost: 8080 / _river / mongodb / _meta ' -d '{"type": "mongodb", "mongodb": {"db": "mydb", "collection": "foo" }, "index": {"name": "name", "type": "random"}} '

  1. Test im Browser:

    http: // localhost: 9200 / _search? q = home

Priyanshu Chauhan
quelle
6
ElasticSearch hat River Plugins veraltet. Dies ist mit Sicherheit nicht der beste Weg, um einen Suchindex zu pflegen.
tsturzl
3

Hier habe ich eine weitere gute Option gefunden, um Ihre MongoDB-Daten nach Elasticsearch zu migrieren. Ein Go-Daemon, der Mongodb in Echtzeit mit Elasticsearch synchronisiert. Es ist der Monstache. Es ist erhältlich bei: Monstache

Unterhalb des anfänglichen Setps zum Konfigurieren und Verwenden.

Schritt 1:

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

Schritt 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>

Schritt 3: Überprüfen Sie die Replikation.

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>

Schritt 4. Laden Sie " https://github.com/rwynn/monstache/releases " herunter . Entpacken Sie den Download und passen Sie Ihre PATH-Variable so an, dass sie den Pfad zum Ordner für Ihre Plattform enthält. "monstache -v" Gehen Sie zu cmd und geben Sie # 4.13.1 ein. Monstache verwendet das TOML-Format für seine Konfiguration. Konfigurieren Sie die zu migrierende Datei mit dem Namen config.toml

Schritt 5.

Meine 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

Schritt 6.

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

Monstache Running ...

Bestätigen Sie migrierte Daten bei Elasticsearch

Datensatz bei Mongo hinzufügen

Monstache Erfasste das Ereignis und migrierte die Daten zu elasticsearch

Abhijit Bashetti
quelle
3

Da Mongo-Connector nun tot erscheint, hat mein Unternehmen beschlossen, ein Tool für die Verwendung von Mongo-Änderungsströmen für die Ausgabe an Elasticsearch zu entwickeln.

Unsere ersten Ergebnisse sehen vielversprechend aus. Sie können es unter https://github.com/electionsexperts/mongo-stream überprüfen . Wir befinden uns noch in einem frühen Entwicklungsstadium und würden Vorschläge oder Beiträge begrüßen.

Jud
quelle