【问题标题】:Automate mongodb and elasticsearch sync自动化 mongodb 和 elasticsearch 同步
【发布时间】:2018-03-03 01:47:31
【问题描述】:

我目前正在做一个项目,我们的主数据库是 mongodb,我们使用 elasticsearch 进行搜索。我们已经通过 java 应用程序将数据插入到 mongodb 中。我们使用 River 插件来同步数据。到目前为止,我们已经通过执行下面提到的 shellscript 文件手动完成了 mongodb 和 elasticsearch 之间的数据同步。 (setup.sh && bash.sh)

//setup.sh
curl -XPOST http://localhost:9200/classdata -d @setup.json

//setup.json
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"classdata": {
  "properties": {
    "className": {
      "type": "string"
    },
"jarID": {
      "index": "not_analyzed",
      "type": "string"
    },
    "jarFileName": {
      "index": "not_analyzed",
      "type": "string"
    },
    "dependencies": {
      "properties": {
        "methodSignature": {
          "type": "string"
        },
        "dependedntClass": {
          "type": "string"
        }
      }
    }
  }
}
}
}

//bash.sh
curl -XPUT "localhost:9200/_river/classdata/_meta" -d '
{
"type": "mongodb",
"mongodb": {
"servers": [
  { "host": "127.0.0.1", "port": 27017 }
],
"options": { "secondary_read_preference": true },
"db": "E",
"collection": "ClassData"
},
"index": {
"name": "classdata",
"type": "classdata"
}
}'

但现在我们的要求发生了变化。现在我们需要自动化这个过程,比如在将数据插入到 mongodb 之后,我们必须在 elasticsearch 和 mongodb 之间自动同步数据。 我不知道该怎么做。如果有人知道如何自动化这个过程,请帮助我。

【问题讨论】:

  • 在将数据插入 mongodb 后,为什么不创建一个方法从 java 程序中执行那些 sh ​​文件?
  • 这不可能我猜每个操作系统都不支持执行shellscript文件吧?

标签: java mongodb elasticsearch


【解决方案1】:

我强烈推荐你monstache。它在后台运行并自动将数据从 Mongodb 同步到 Elasticsearch。并且可以配置指定要同步哪个db和什么样的操作(插入、更新、删除...),配置选项列在here

【讨论】:

    【解决方案2】:

    MongoConnector 插件支持 MongoDB 和 Elastic Search 之间的数据同步。

    1) 在您的服务器中安装 Mongo 连接器。

    `pip install mongo-connector`
    

    2) 根据目标系统安装Doc Manager。基于 Target 系统的 Doc Manager 有多种实现方式。安装支持 Elastic Search 的版本,尤其是您拥有的版本。例如)

     pip install 'mongo-connector[elastic5]'
    

    3) 使用源(mongodb)和目标系统的配置启动 Mongo 连接器。例)

    mongo-connector -m <mongodb server hostname>:<replica set port> -t <replication endpoint URL, e.g. http://localhost:8983/solr> -d <name of doc manager>
    

    现在数据将在两个系统之间自动同步。

    欲了解更多信息,请使用以下链接,

    https://www.mongodb.com/blog/post/introducing-mongo-connector

    https://github.com/mongodb-labs/mongo-connector

    https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch

    【讨论】:

    • 感谢您的回答,我想知道连接器与 River 插件非常相似,它并没有解决我的自动化过程问题,我必须手动运行这些命令,对吧?我想要一种自动化同步过程的方法。谢谢。
    • 嗨瑞安。该命令需要执行一次以启动自动同步的过程。
    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2017-05-16
    相关资源
    最近更新 更多