2014-03-02 53 views
0

我需要將一個字段的數據類型從「int」更改爲「long」,因爲某些值超過了32位有符號整數的上限。我可能還需要在將來添加和刪除一些字段。上傳新的schema.xml後,我的索引是否會自動更新?如果不是,我應該如何進行重新索引?模式更改後的Solr重新索引

Solr FAQ建議我通過更新刪除所有數據的命令刪除數據。但是,我的團隊正在使用Cassandra作爲主數據庫,看起來Cassandra和Solr緊密耦合(即,無論您在Solr索引中做什麼都將直接影響Cassandra數據)。在我們的例子中,刪除Solr中的數據將刪除底層的Cassandra行。處理這個問題的最佳方法是什麼? Cassandra表(和Solr核心)包含超過20億行,因此創建一個重複的核心,然後交換兩個是不實際的。

注意:我們正在使用Datastax Enterprise 4.0。我不確定上述行爲是否適用於開源Solr

回答

1

您需要重新索引Solr數據。不幸的是,由於您要更改字段的類型,因此您需要先刪除Solr的舊索引數據,然後再從Cassandra數據中重新索引。

有關DSE 4.0文檔的PDF文件的第109頁,瞭解Solr管理用戶界面中完全重建索​​引的說明,或者從命令行(curl命令)重新加載Solr和完全重建索​​引的第126頁 - 使用reindex = true和deleteAll = true參數。

+0

只是爲了澄清:如果我在UI中單擊完整的reindex,它是否只刪除Solr中的數據而不是Cassandra中的數據? (請參閱我上面關於在Cassandra中反映的Solr更新/刪除的聲明)。如果我選擇就地更新,那麼在重新索引之後是否會保留舊索引? (如果是這樣,那麼以後如何刪除舊的索引?) –

+0

正常的索引增量更新您現有的索引,因此您不必在刪除之後刪除它。 完全重新索引首先刪除整個索引(*不是* Cassandra數據),然後從頭開始重新索引。 – sbtourist