sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB 4.x Real Time Sync til ElasticSearch 6.x +

hvis du arbejder med docker kan du få denne tutorial

https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb

Monstache er en synkroniseringsdæmon skrevet i Go, der løbende indekserer dine MongoDB-samlinger til Elasticsearch. Monstache giver dig mulighed for at bruge Elasticsearch til at lave komplekse søgninger og sammenlægninger af dine MongoDB-data og nemt bygge realtime Kibana-visualiseringer og dashboards.dokumentation til Monstache :
https://rwynn.github.io/monstache-site/
github :
https://github.com/rwynn/monstache

docker-compose.yml

version: '2.3'
networks:
  test:
    driver: bridge

services:
  db:
    image: mongo:3.0.2
    expose:
      - "27017"
    container_name: mongodb
    volumes:
      - ./mongodb:/data/db
      - ./mongodb_config:/data/configdb
    ports:
      - "27018:27017"
    command: mongod --smallfiles --replSet rs0
    networks:
      - test

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.7
    container_name: elasticsearch
    volumes:
      - ./elastic:/usr/share/elasticsearch/data
      - ./elastic/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
    command: elasticsearch -Enetwork.host=_local_,_site_ -Enetwork.publish_host=_local_
    healthcheck:
      test: "wget -q -O - http://localhost:9200/_cat/health"
      interval: 1s
      timeout: 30s
      retries: 300
    ulimits:
      nproc: 65536
      nofile:
        soft: 65536
        hard: 65536
      memlock:
        soft: -1
        hard: -1
    networks:
      - test

  monstache:
    image: rwynn/monstache:rel4
    expose:
      - "8080"
    ports:
      - "8080:8080"
    container_name: monstache
    command: -mongo-url=mongodb://db:27017 -elasticsearch-url=http://elasticsearch:9200 -direct-read-namespace=Product_DB.Product -direct-read-split-max=2
    links:
      - elasticsearch
      - db
    depends_on:
      db:
        condition: service_started
      elasticsearch:
        condition: service_healthy
    networks:
      - test

replicaset.sh

#!/bin/bash

# this configuration is so important 
echo "Starting replica set initialize"
until mongo --host 192.168.144.2 --eval "print(\"waited for connection\")"
do
    sleep 2
done
echo "Connection finished"
echo "Creating replica set"
mongo --host 192.168.144.2 <<EOF
rs.initiate(
  {
    _id : 'rs0',
    members: [
      { _id : 0, host : "db:27017", priority : 1 }
    ]
  }
)
EOF
echo "replica set created"

1) kør denne kommando en terminal$ sysctl -w vm.max_map_count=262144

hvis du arbejder på en server ved jeg ikke om det er nødvendigt

2)kør en terminaldocker-compose build

3) kør en terminal$ docker-compose up -d

ikke ned din container.

$ docker ps

kopier mongo db-billedets IP-adresse

$ docker inspicer id_of_mongo_image

kopier IP-adressen og indstil den i replicaset.sh og kør replicaset.sh

$ ./replicaset.sh

på terminal skal du se => replikasæt oprettet

$ docker-compose down

4)kør en terminal$ docker-compose up

endelig .......

Replikering i MongoDB

Et replikasæt er en gruppe af mongoder instanser, der opretholder det samme datasæt. Et replikasæt indeholder flere databærende noder og eventuelt en arbiter-knude. Af de databærende noder anses kun ét medlem for at være den primære node, mens de andre noder anses for at være sekundære noder.
primær node modtager alle skriveoperationer. Et replikasæt kan kun have én primær, der er i stand til at bekræfte skrivninger med { w:"majoritet" } skrive bekymring; selvom en anden mongod-instans under nogle omstændigheder forbigående tror, ​​at den også er primær.
Se konfigurationen af ​​replikasættet. Brug rs.conf()

replikasæt giver dig mulighed for at indeksere dine MongoDB-samlinger til Elasticsearch en realtidssynkronisering.



  1. Hvordan sorteres array inde i samlingsposten i MongoDB?

  2. Hvordan finder man ud af, om Mongodb kører i auth-tilstand i shell-script?

  3. MongoDB finde på alle egenskaber af dokument

  4. Installer mongodb på azure devops-vært til testkørsel