sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB 4.x Synchronizace v reálném čase s ElasticSearch 6.x +

pokud pracujete s dockerem, můžete získat tento tutoriál

https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb

Monstache je synchronizační démon napsaný v Go, který nepřetržitě indexuje vaše sbírky MongoDB do Elasticsearch. Monstache vám dává možnost používat Elasticsearch ke komplexnímu vyhledávání a agregaci vašich dat MongoDB a snadno vytvářet vizualizace Kibana a dashboardy v reálném čase.documentation pro 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

replikaset.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) spusťte tento příkaz en terminal$ sysctl -w vm.max_map_count=262144

pokud pracujete na serveru, nevím, zda je to nutné

2)spusťte sestavení sestavení terminaldocker-compose

3) spusťte en terminal$ docker-compose up -d

nespouštějte svůj kontejner.

$ docker ps

zkopírujte IPadresu mongo db image

$ docker zkontrolovat id_of_mongo_image

zkopírujte IPAddress a nastavte ji v replicaset.sh a spusťte replicaset.sh

$ ./replicaset.sh

na terminálu byste měli vidět => vytvořená sada replik

$ docker-compose down

4)spusťte na terminálu$ docker-compose up

konečně .......

Replikace v MongoDB

Sada replik je skupina mongod instance, které udržují stejnou datovou sadu. Sada replik obsahuje několik datových uzlů a volitelně jeden rozhodovací uzel. Z uzlů nesoucích data je jeden a pouze jeden člen považován za primární uzel, zatímco ostatní uzly jsou považovány za sekundární uzly.
primární uzel přijímá všechny operace zápisu. Sada replik může mít pouze jednu primární možnost potvrzovat zápis pomocí { w:"většina" } napsat znepokojení; i když za určitých okolností se může jiná instance mongoda přechodně domnívat, že je také primární.
Zobrazte konfiguraci sady replik. Použijte rs.conf()

Sada replik vám umožní indexovat vaše sbírky MongoDB do Elasticsearch se synchronizací v reálném čase.



  1. Mongoose - vyhledávání vnořených dokumentů podle kritérií

  2. Výplň v SQL

  3. Chyba:jsou vyžadovány argumenty data a salt

  4. Problém s oprávněními Pymongo pro bezpečné vkládání