这可能是一个微不足道的问题但是我试图附加到现有的Solr索引并且似乎每次都覆盖那里的东西。我有两个数据库,我从中获取数据,我可以单独从每个数据库导入数据但是当我从一个数据库导入数据然后立即从第二个数据库导入数据时,第一个被覆盖。我在db-config.xml文件中映射了两个dataSource,我使用标准的Admin UI来运行导入。我的配置文件看起来像这样。
<dataConfig>
<dataSource
name="ds-1"
type="JdbcDataSource"
driver="Driver"
url="jdbc_url1"
user="user1"
password="pass1"/>
<dataSource
name="ds-2"
type="JdbcDataSource"
driver="Driver"
url="jdbc_url2"
user="user2"
password="pass2"/>
<document>
<entity name="entity1" dataSource="ds-1" query="SELECT YYY FROM TABLE">
...
</entity>
<entity name="entity2" dataSource="ds-2" query="SELECT ZZZ FROM TABLE">
...
</entity>
</document>
</dataConfig>
我该怎么做才能防止原始索引被覆盖。我想逐渐从各种不同的来源添加数据,这样我的索引就会被删除,现在我很好。
答案 0 :(得分:1)
您的问题是,您可能正在将索引文档的键定义为数据库中的主键ID,并且值是重叠的。为了防止这种情况,您需要为Solr指定唯一的ID。通常,当我在过去遇到过这个问题时,我使用字符串字段作为id字段,并在数据库的id中附加一个或两个字符以使其唯一。示例:产品表中的项目将具有P1,P2等ID,而订单表中的项目将具有O1,O2等ID。
您应该可以使用数据导入处理程序TemplateTransformer来帮助您完成此任务。