自动化mongodb和elasticsearch同步

时间:2017-09-21 16:02:05

标签: java mongodb elasticsearch

我目前正在开发一个项目,我们的主数据库是mongodb,搜索时我们使用elasticsearch。我们已经通过java应用程序将数据插入到mongodb中。我们使用河流插件来同步数据。到目前为止,我们通过执行下面提到的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之间自动同步数据。 我不知道该怎么做。如果有人知道如何自动化这个过程,请帮助我。

2 个答案:

答案 0 :(得分:2)

我强烈建议您monstache。它在后台运行,并自动将数据从Mongodb同步到Elasticsearch。并且您可以配置以指定要同步哪个数据库和哪种操作(插入,更新,删除...),here

中列出的配置选项

答案 1 :(得分:0)

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

1)在服务器中安装Mongo Connector。

`pip install mongo-connector`

2)根据目标系统安装Doc Manager。基于Target系统的Doc Manager有各种实现。安装支持Elastic Search的那个,特别是您拥有的版本。例如)

 pip install 'mongo-connector[elastic5]'

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

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