Solr 8.9.0与MongoDB 5.0社区版集成实操问题咨询
Solr 8.9.0 + MongoDB 5.0 集成实操步骤
以下操作完全适配你当前使用的版本组合(Linux环境、Java14、Solr8.9.0、MongoDB5.0社区版、已安装mongo-connector):
前置检查
- 确认mongo-connector已安装solr文档管理器,若未安装执行命令:
pip install 'mongo-connector[solr]' - 确认MongoDB已开启副本集(mongo-connector依赖oplog实现增量同步,必须开启副本集,单节点也可配置)
- 确认Solr服务正常运行,对应core已创建完成
1. MongoDB 侧配置
- 若未开副本集,修改MongoDB配置文件
mongod.conf,新增以下配置:
replication: replSetName: rs0 # 副本集名称可自定义
- 重启MongoDB服务,进入Mongo Shell执行命令初始化副本集:
rs.initiate() - 若MongoDB开启了身份认证,创建一个拥有oplog读取权限的账号,用于mongo-connector连接
2. Solr 侧配置
- 进入你创建的对应core的conf目录,修改
managed-schema(或schema.xml):- 配置字段映射,将MongoDB的字段和Solr的字段一一对应,同时将MongoDB的
_id映射为Solr的默认唯一键id,示例:
<!-- 唯一键配置保持默认即可 --> <uniqueKey>id</uniqueKey> <!-- 按需添加你需要同步的字段,类型和MongoDB对应字段匹配 --> <field name="title" type="text_general" indexed="true" stored="true"/> <field name="content" type="text_general" indexed="true" stored="true"/> <field name="create_time" type="pdate" indexed="true" stored="true"/>- 可按需关闭自动字段类型猜测,避免同步时类型不匹配报错
- 配置字段映射,将MongoDB的字段和Solr的字段一一对应,同时将MongoDB的
- 检查
solrconfig.xml,确认/update/json请求处理器正常开放,若Solr开启了身份认证,提前记录账号密码后续配置使用 - 重启Solr服务使配置生效
3. mongo-connector 配置
在任意目录新建配置文件solr_sync_config.json,参考示例填写配置:
{ "mainAddress": "mongodb://localhost:27017/?replicaSet=rs0", "docManagers": [ { "docManager": "solr_doc_manager", "targetURL": "http://localhost:8983/solr/你的core名称", "bulkSize": 100, "uniqueKey": "id" } ], "namespaces": { "你要同步的MongoDB库名.你要同步的集合名": true }, "fieldMap": { "_id": "id" }, "continueOnError": true, "verbosity": 2 }
若MongoDB或Solr开启了身份认证,在对应地址中加上账号密码即可,示例:mongodb://账号:密码@localhost:27017/?replicaSet=rs0
4. 启动与同步验证
- 执行命令启动mongo-connector:
mongo-connector -c solr_sync_config.json - 查看控制台日志,无报错则说明启动成功,首次启动会自动执行全量同步,同步完成后自动进入增量同步模式
- 验证同步效果:
- 全量验证:进入Solr后台查询界面,执行
*:*查询,确认MongoDB中的历史数据已同步到Solr - 增量验证:在MongoDB中新增/修改/删除一条数据,等待3-5秒后在Solr中查询,确认变更已同步
- 全量验证:进入Solr后台查询界面,执行
常见问题排查
- 若同步时报字段类型错误,检查Solr字段配置和MongoDB对应字段的类型是否匹配
- 若mongo-connector启动报错提示无法获取oplog,确认MongoDB副本集配置正确且账号有oplog读取权限
- 若数据仅部分同步,检查
namespaces配置是否正确,排除未配置的库/集合被过滤的情况
内容的提问来源于stack exchange,提问作者Muhammad
相关产品推荐
相关产品推荐

