sql >> データベース >  >> NoSQL >> MongoDB

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

    Dockerを使用している場合は、このチュートリアルを入手できます

    https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb

    Monstacheは、Goで記述された同期デーモンであり、MongoDBコレクションをElasticsearchに継続的にインデックス付けします。 Monstacheを使用すると、Elasticsearchを使用して、MongoDBデータの複雑な検索と集計を実行し、MonstacheのリアルタイムのKibana視覚化とダッシュボードを簡単に構築できます。
    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)このコマンドを実行しますe en terminal $ sysctl -w vm.max_map_count =262144

    サーバーで作業している場合、必要かどうかわかりません

    2)enterminaldockerを実行します-ビルドを作成します

    3)en terminal $ docker-compose up -d

    を実行します

    コンテナを下ろさないでください。

    $ docker ps

    mongodbイメージのIPアドレスをコピーします

    $ docker inspect id_of_mongo_image

    IPアドレスをコピーしてreplicaset.shに設定し、replicaset.shを実行します

    $ ./replicaset.sh

    ターミナルでは、=>レプリカセットが作成されました

    を参照してください。

    $ docker-compose down

    4)en terminal$dockerを実行します-構成します

    ついに.......

    MongoDBでのレプリケーション

    レプリカセットは、mongod のグループです。 同じデータセットを維持するインスタンス。レプリカセットには、複数のデータ保持ノードと、オプションで1つのアービターノードが含まれます。データ保持ノードのうち、1つのメンバーのみがプライマリノードと見なされ、他のノードはセカンダリノードと見なされます。
    プライマリノード すべての書き込み操作を受け取ります。レプリカセットには、 {w:"マジョリティ"} 懸念を書く;ただし、状況によっては、別のmongodインスタンスが一時的に自分自身もプライマリであると信じている場合があります。
    レプリカセットの構成を表示します。 rs.conf()

    レプリカセットを使用すると、MongoDBコレクションをElasticsearchにリアルタイム同期でインデックス付けできます。



    1. 返す配列要素を条件付きで評価します

    2. マングースは文字列型を使用してデータを入力できません

    3. 変数$tid、$ idをraw関数に渡す方法は?

    4. シェルスクリプトを介してmongoコマンドを実行する方法は?