一 Centos7 上导出solr数据到json文件中
开发需要,solr的数据需要导出来,放到另一套架构中,那么怎么将solr数据导出,放入json文件中?
导出solr数据,我们需要借助github上的一个maven项目。
1 安装工具:
[root@solr1 local]# git clone https://github.com/freedev/solr-import-export-json.git
如下图:
或者
直接将远程服务器的solr-import-export-json 直接拷贝过来也行
[root@solr1 local]# scp -r solr-import-export-json/ root@192.168.0.183:/usr/local (在远程服务器上进行的操作)
root@192.168.0.183's password:
2 进入solr-import-export-json 目录
[root@solr1 local]# cd solr-import-export-json/
[root@solr1 solr-import-export-json]# ls
contributors.txt gpl.txt pom.xml README.md run.sh src
需要根据自己的项目情况,修改一下pom.xml 文件中的配置。
因为我项目搭建的solrcloud是7.3.1版本,所以,pom.xml文件中,定义的solr插件版本改成了 7.3.1
3 安装maven
[root@solr1 local]# yum -y install maven
注意:
如果不安装maven,当执行如下命令:
[root@solr1 solr-import-export-json]# ./run.sh -s http://localhost:8983/solr/traces -a export -o ~/abc.json
有可能会报如图所示错误:
报此错误的原因是 linux服务器上没有安装 maven
4 在linux系统上首次使用maven,需要执行一下如下命令,之后就不用再执行 mvn clean package 命令了
[root@solr1 solr-import-export-json]# mvn clean package
需要在 solr-import-export-json 目录下执行 mvn clean package 命令(否则会报找不到pom.xml文件)。执行命令后会下载 pom.xml 中指定的插件,比如
5 导出数据---需要在 solr-import-export-json 目录下执行
./run.sh -s http://localhost:8983/solr/<repository> -a export -o /tmp/xxx.json
比如,将solr中 traces集合(可以是core也可以是collection) 下的数据导入到 ~(~默认代指root)目录下traces.json文件中
[root@solr1 solr-import-export-json]# ./run.sh -s http://localhost:8983/solr/traces -a export -o ~/traces.json
6 执行完第5步,在 ~ 目录下可以看到生成的 traces.json文件。
生成的json文件里面的数据内容格式为:
还不符合标准的json格式,自己在对象之间加上,在最外层加上[ ] 就符合标准的 json规范了。
二 向solr中导入数据
注意:
1 使用solr web客户端 向solr中导入json数据时,导入的是对象,多个对象之间要加“,”且外面不能加[ ]
2 使用solr命令(通过post.jar)向solr中添加数据时,数据所在的json文件必须是符合json格式真正的json文件
post.jar 位于 solr-7.3.1/example/exampledocs/ 下。 用post.jar向solr中导入数据举例:
java -Dc=traces -Dtype=application/json -jar post.jar ~/solrdata_json/traces.json
三 solr如何删除数据
1 删除所有索引
2 删除id为1的索引,使用xml有两种写法:
写法一:
<delete><id>1</id></delete> <commit/>
写法二:
<delete><query>id:1</query></delete> <commit/>

或
3 如果id不是int类型比如是string类型
可以这样删除:
四 solr查询数据
1 使用curl命令在products中查询 字段 p_count=1 的索引数据
[root@gx-solr1 logs]# curl "http://gx-solr2:8983/solr/products/select?q=p_count:1"
2 查看products的shema文件managed-schema (可参照“按浏览器F12>network,找到类似请求”)
[root@gx-solr1 ~]# curl "http://gx-solr2:8983/solr/products/admin/file?_=1543998686038&contentType=text/plain;charset=utf-8&file=managed-schema&wt=json"
3 查询 solr某个collection下的schema文件内容,执行命令 curl 'xxx' ,将其返回结果保存到 log.log 中
[root@gx-solr1 ~]# curl 'http://192.168.0.110:8983/solr/scan_detail/admin/file?_=1544066402749&contentType=text/plain;charset=utf-8&file=managed-schema&wt=json' > log.log
4 通过solr web界面按 id 降序 查询数据
降序 desc (descending)
升序 asc (ascending)