MongoDB数据导入Solr中

一直以来,使用Solr同步数据库数据作为GIS地图的数据使用,因为地图使用的数据源经常变动,且字段也会变动,所以,就开始使用Solr作为地图接入数据的中间件使用;

使用Solr接入过MySql、Oracle、PostgreSql、DB2等一系列的结构化数据库;

突然有一天问题来了,需要接入MongoDB的数据,于是开始了尝试;

前记:

用mongo-connector可以很好的将这两者整合。但是这样的效果并不是我想要的;

我需要像Solr自有的solr-dataimporthandler一样将数据导入Solr;

进入正题:

Solr使用的7.4版本

大致思路:

使用(mongo驱动包)mongo-java-driver-3.11.2.jar(版本自己定),作为JDBC来使用,不能称作mongo-jdbc,但是在本文使用的方式是这个意思;

使用(基于solr-dataimporthandler)写的SolrMongoImporter.jar,作为读取data-config.xml(数据库配置文件)的工具;solr-dataimporthandler为Solr自带的工具,提供常用的结构化数据的读取导入;

说白了就是,使用mongo驱动包自己写个基于solr导入mongoDB数据的导入器;

SolrMongoImporter.jar编写

   使用来自github上的源码经行修改,我主要新定义了部分自己需要的字段的读取,将pom.xml的文件里面的依赖版本改成我已有的

  将编写好的SolrMongoImporter.jar放入solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib下面

mongo-java-driver-3.11.2.jar

  同样也是来自github上有源码的,mongo-java-driver,版本自选;

  注意,在SolrMongoImporter.jar 编写的时候,会使用到这个版本号,最好使用对应版本的依赖项。

XML配置

  在Solr目录下conf文件夹中的solrconfig.xml中:

1   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
2     <lst name="defaults">  
3       <str name="config">data-config.xml</str>   
4     </lst>  
5   </requestHandler>

data-config.xml配置:

   通过xml配置的文件名,在conf文件夹中修改data-config.xml;

  我的配置如下,originField为我自己定义的字段,请不要参考。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 
 3 <dataConfig>
 4     <dataSource name="MongoSource" type="MongoDataSource" host="172.16.xxx.xxx" port="27017" database="xxx" />
 5   <document>
 6     <entity name="iot"
 7        processor="MongoEntityProcessor"
 8        query="{'typeId':'3ef659db64a24cb8805d7c2ed08fdce9'}"
 9        collection="xxx"
10        datasource="MongoSource"
11        transformer="MongoMapperTransformer"
12        mapMongoFields="true">
13       <field column="id" name="id" mongoField="typeId"/>
14       <field column="name" name="name" mongoField="typeName"/>
15       <field column="origin" name="origin" mongoField="ogName" originField="iot"/>
16     </entity>
17   </document>
18 </dataConfig>

配置完成后,重启Solr,import成功

上图:

 

后面还需要研究如何自动更新~~~

 出处:https://www.cnblogs.com/MobiusMap/p/11853015.html

猜你喜欢

转载自www.cnblogs.com/MobiusMap/p/11853015.html