MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB 4.x Синхронизиране в реално време с ElasticSearch 6.x +

ако работите с докер, можете да получите този урок

https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb

Monstache е синхронизиращ демон, написан на Go, който непрекъснато индексира вашите MongoDB колекции в Elasticsearch. Monstache ви дава възможност да използвате Elasticsearch за извършване на сложни търсения и агрегиране на вашите MongoDB данни и лесно изграждане на визуализации и табла за управление на Kibana в реално време.документация за 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) изпълнете тази команда в terminal$ sysctl -w vm.max_map_count=262144

ако работите на сървър, не знам дали е необходимо

2)изпълнете компилация на terminaldocker-compose

3) стартирайте en terminal$ docker-compose up -d

не сваляйте контейнера си.

$ докер ps

копирайте Ipadres на mongo db изображение

$ docker инспектира id_of_mongo_image

копирайте IPAddress и го задайте в replicaset.sh и стартирайте replicaset.sh

$ ./replicaset.sh

на терминала трябва да видите => създаден комплект реплики

$ docker-compose down

4)изпълнете en terminal$ docker-compose up

накрая .......

Репликация в MongoDB

Набор от реплики е група от mongod екземпляри, които поддържат същия набор от данни. Набор от реплики съдържа няколко носещи данни възли и по избор един арбитър възел. От възлите, носещи данни, един и само един член се счита за първичен възел, докато другите възли се считат за вторични възли.
основен възел получава всички операции за запис. Набор от реплики може да има само една основна, способна да потвърждава записвания с { w:"мнозинство" } пишете загриженост; въпреки че при някои обстоятелства друг екземпляр на mongod може временно да смята, че също е първичен.
Вижте конфигурацията на набора реплики. Използвайте rs.conf()

комплектът реплики ви позволява да индексирате вашите MongoDB колекции в Elasticsearch и синхронизация в реално време.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. автоматично нарастване на идентификаторите в mongoose

  2. MongoDB $rand

  3. начин за актуализиране на множество документи с различни стойности

  4. Плъзгащи се средни с рамката за агрегиране на MongoDB?

  5. Как да актуализирам частично обект в MongoDB, така че новият обект да се наслагва / слее със съществуващия