情景
1、solr中的類型修改導致solr的core無法加載,只能刪除core,重新創建。但是solr中的數據,只能從core心中導出,在導入新建的核心中。
2、試了幾種方案,還是通過第三方freedev / solr-import-export-json的組件更加靈活。
3、其中幾種方案也做了試錯
- backup,restore方式,速度很快,其實就是復制索引文件到其他地方,但是無法還原到其他核心。
- solr cloud ,單體solr報錯,無法使用cloud方式保存。可以將導出的數據導入到其他核心。
- solr-import-export-json方式,基于數據導入導出,靈活(需要下載第三方組件包solr-import-export-1.0.jar)。
步驟
- 導出
java -jar solr-import-export-1.0.jar -a export -s http://127.0.0.1:8983/solr/核心 -o solr.json
- 導入
java -jar solr-import-export-1.0.jar -a import -s http://127.0.0.1:8983/solr/new_core -o solr.json
- 參數解釋
myapp [-a <arg>] [-b <arg>] [-C] [-c <arg>] [-d] [-D] [-f <arg>] [-F <arg>] [-h] [-i <arg>] [-k <arg>] [-o <arg>] [-p <arg>] [-s <arg>] [-S <arg>] [-u <arg>] [-x <arg>]
solr-import-export-json-a,--actionType <arg> 操作類型[import|export|backup|restore]-b,--blockSize <arg> 塊大小(默認5000條文檔)-C,--disableCursors 禁用Solr讀取時的游標-c,--commitDuringImport <arg> 在指定數量的文檔后提交進度。如果不指定,則整個工作將在完成后提交。-d,--deleteAll 導入前刪除所有文檔-D,--dryRun 干運行測試-f,--filterQuery <arg> 導出時的過濾查詢-F,--dateTimeFormat <arg> 設置自定義日期時間格式(默認yyyy-MM-dd'T'HH:mm:ss.SSS'Z')-h,--help 幫助-i,--includeFields <arg> 導出時使用的簡單逗號分隔字段列表。如果不指定,將使用所有存在的字段-k,--uniqueKey <arg> 深度分頁時指定唯一鍵-o,--output <arg> 輸出文件-p,--password <arg> 基本認證密碼-s,--solrUrl <arg> Solr URL - http://localhost:8983/solr/collection_name-S,--skipFields <arg> 導入導出時跳過的逗號分隔字段列表。接受每個字段前綴/后綴通配符*。所以您可以指定跳過所有以name_開頭的字段-u,--user <arg> 基本認證用戶名-x,--skipCount <arg> 加載文件時要跳過的文檔數。當出現錯誤時很有用,以便從上次成功保存的位置繼續加載。
參考
感謝大佬的文章