SOLR数据导入和导出

情景

1、solr中的类型修改导致solr的core无法加载,只能删除core,重新创建。但是solr中的数据,只能从core心中导出,在导入新建的核心中。
2、试了几种方案,还是通过第三方freedev / solr-import-export-json的组件更加灵活。
3、其中几种方案也做了试错

  1. backup,restore方式,速度很快,其实就是复制索引文件到其他地方,但是无法还原到其他核心。
  2. solr cloud ,单体solr报错,无法使用cloud方式保存。可以将导出的数据导入到其他核心。
  3. solr-import-export-json方式,基于数据导入导出,灵活(需要下载第三方组件包solr-import-export-1.0.jar)。

步骤

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

参考

感谢大佬的文章

在使用 Spoon 工具将 Solr 中的数据导出导入到 MySQL 数据库的过程中,主要涉及以下几个步骤: ### 1. 准备工作 确保你已经安装了以下工具环境: - **Spoon(Kettle)**:这是 Pentaho Data Integration 的图形化界面工具,用于构建 ETL 流程。 - **Solr 客户端支持**:确保 Spoon 能够连接到 Solr 服务器。可以通过 HTTP 请求获取 Solr 的 JSON 输出格式数据。 - **MySQL JDBC 驱动**:在 Spoon 中配置 MySQL 数据库连接时需要对应的 JDBC 驱动。 ### 2. 连接到 Solr 数据源 在 Spoon 中通过 HTTP 请求获取 Solr 数据: - 使用 `HTTP` 步骤向 Solr 发送请求,例如: ``` http://<solr-host>:<port>/solr/<core-name>/select?q=*:*&wt=json ``` 该请求会返回所有文档的 JSON 格式数据。 - 使用 `JSON Input` 步骤解析返回的 JSON 数据,并提取所需的字段内容。 ### 3. 数据转换与清洗 根据目标 MySQL 表结构对数据进行必要的转换: - 使用 `Select values`、`Calculator` 或其他转换步骤调整字段名称、类型或计算新值。 - 如果需要,可以添加校验规则来过滤无效数据或处理缺失值。 ### 4. 导入到 MySQL 数据库 将处理后的数据写入 MySQL 数据库: - 在 Spoon 中创建一个新的数据库连接,指向你的 MySQL 数据库。 - 使用 `Table Output` 或 `Insert / Update` 步骤将数据插入到目标表中。对于增量更新,建议使用 `Insert / Update` 来实现 UPSERT 操作[^1]。 ### 示例代码块 ```xml <step> <name>HTTP</name> <type>http</type> <attribute name="url">http://localhost:8983/solr/my_core/select?q=*:*&wt=json</attribute> </step> <step> <name>JSON Input</name> <type>jsoninput</type> <attribute name="field"> [ {"name":"id", "path":"$.id"}, {"name":"title", "path":"$.title"} ] </attribute> </step> <step> <name>Table Output</name> <type>tableoutput</type> <attribute name="schema">my_schema</attribute> <attribute name="table">my_table</attribute> <attribute name="database">mysql_connection</attribute> </step> ``` ### 5. 执行调度任务 - 点击运行按钮执行整个 ETL 流程,观察日志以确保没有错误。 - 可以使用作业(Job)来定时调度转换(Transformation),实现定期从 Solr 同步数据到 MySQL。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值