MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB 4.x Synchronizacja w czasie rzeczywistym z ElasticSearch 6.x +

jeśli pracujesz z dockerem, możesz pobrać ten samouczek

https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb

Monstache to demon synchronizacji napisany w Go, który stale indeksuje kolekcje MongoDB w Elasticsearch. Monstache daje możliwość korzystania z Elasticsearch do wykonywania złożonych wyszukiwań i agregacji danych MongoDB oraz łatwego tworzenia wizualizacji Kibana w czasie rzeczywistym i dashboards.documentation dla Monstache :
https://rwynn.github.io/monstache-site/
github :
https://github.com/rwynn/monstache

docker-compose.yml

Wersja
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

replika.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) uruchom to polecenie w terminalu$ sysctl -w vm.max_map_count=262144

jeśli pracujesz na serwerze, nie wiem czy jest to konieczne

2)uruchom kompilację terminaldocker-compose

3) uruchom en terminal$ docker-compose up -d

nie opuszczaj pojemnika.

$ doker ps

skopiuj adres IP obrazu mongo db

$ Docker sprawdź id_of_mongo_image

skopiuj adres IP i ustaw go w repliceset.sh i uruchom repliceset.sh

$ ./replicaset.sh

na terminalu, który powinieneś zobaczyć => zestaw replik utworzony

$ docker-compose down

4)uruchom w terminalu$ docker-compose up

w końcu .......

Replikacja w MongoDB

Zestaw replik to grupa mongod instancje, które zachowują ten sam zestaw danych. Zestaw replik zawiera kilka węzłów przenoszących dane i opcjonalnie jeden węzeł arbitra. Spośród węzłów przenoszących dane jeden i tylko jeden element jest uważany za węzeł główny, podczas gdy pozostałe węzły są uważane za węzły drugorzędne.
węzeł podstawowy odbiera wszystkie operacje zapisu. Zestaw replik może mieć tylko jedną podstawową, która może potwierdzać zapisy za pomocą { w:"większość" } napisz troskę; chociaż w niektórych okolicznościach inna instancja mongod może przejściowo uważać się za podstawową.
Wyświetl konfigurację zestawu replik.Użyj rs.conf()

zestaw replik umożliwia indeksowanie kolekcji MongoDB do Elasticsearch i synchronizację w czasie rzeczywistym.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy pole listy może być kluczem fragmentu w MongoDB?

  2. Agregacja MongoDB ze sterownikiem Java

  3. Jak prawidłowo obsługiwać zapytania o paginację za pomocą mongodb i php?

  4. Jak dokonać wyboru pola na find() w natywnym sterowniku mongodb?

  5. Problemy z MongoDB PHP UTF-8