我目前正在开发一个项目,我们的主数据库是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之间自动同步数据。 我不知道该怎么做。如果有人知道如何自动化这个过程,请帮助我。
答案 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