我試圖將多個數據庫索引到一個solr索引中。我一直在閱讀多個數據源上的solr wiki,並嘗試用不同的設置來擺弄,但我無法獲得理想的效果。如何使用db-data-config.xml配置solr以索引多個來源的文檔
我的配置是這樣的:
<dataConfig>
<!-- Has 10000 items -->
<dataSource name="ds1" driver="org.h2.Driver" url="jdbc:h2:file:/path/to/first" />
<!-- Has ~7000 items -->
<dataSource name="ds2" driver="org.h2.Driver" url="jdbc:h2:file:/path/to/second" />
<document name="myDocName">
<entity name="firstEntity" rootEntity="true"
dataSource="ds1" query="SELECT * FROM BLAH"
transformer="my.Transformer" threads="4">
... <!-- field configuration here -->
</entity>
<entity name="secondEntity" rootEntity="true"
dataSource="ds2" query="SELECT * FROM BLAH"
transformer="my.Transformer" threads="4">
... <!-- field configuration here -->
</entity>
</document>
</dataConfig>
現在,我們目前正與TESTDATA工作,所以我不知道有多少記錄有每個數據庫中,第一個包含〜7000和第二10000。當我開始索引我得到一個信息消息,有〜17000補充說:
INFO: {deleteByQuery=*:*,add=[5, 1, 2, 6, 7, 4, 8, 3, ... (17069 adds)],commit=} 0
然而,當我運行*:在Web界面*查詢我只得到10000項(這是數完全項目在最大的分貝。這似乎表明7096文件hav e到那裏的實體,而剩下的只有一個。
我試圖在配置文件中設置文檔元素,但這導致只有一個被導入(可能是因爲具有相同的名稱,即文檔名稱=「myDocName」對於兩個文檔元素的配置完全相同)。
在這一點上,我卡住了,不知道如何正確配置這一點。我唯一可以想到的是,我必須分別爲兩個數據庫建立索引,但這個工作流程對我來說也不完全清楚。任何幫助,將不勝感激。
更新1:我試圖給兩個實體不同的名稱(根據文檔要求的東西),但是這會導致以下行爲。首先從第一個數據庫中添加文檔,然後用第二個數據庫中的文檔覆蓋前N個現有文檔,其中N是第二個數據庫中的記錄數。顯然這不是我想要的,我想要N 額外的文件。在配置中添加第二個文檔元素似乎也不起作用。
更新2:根據此錯誤報告中的註釋:https://issues.apache.org/jira/browse/SOLR-895,文檔標記中的根實體應導致這些實體的新文檔。這不是我正在發生的事情。在每個實體標籤上設置rootEntity =「true」並不會改變任何內容。結果仍然是,導入後我只有10000個文件,而不是預期的17000.
是的,情況正是如此。感謝您指出了這一點。有兩個不同的數據庫由我們擁有的工具生成,id字段只是自動遞增的兩個dbs,所以確實重疊的id。通過在db中使用另一個字段來修復,這在兩個dbs中是真正唯一的。 –