情景
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
java -jar solr-import-export-1.0.jar -a export -s http://127.0.0.1:8983/solr/核心 -o solr.json
- 导入
java
java -jar solr-import-export-1.0.jar -a import -s http://127.0.0.1:8983/solr/new_core -o solr.json
- 参数解释
xml
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> 加载文件时要跳过的文档数。当出现错误时很有用,以便从上次成功保存的位置继续加载。
参考
感谢大佬的文章