通过dos执行curl导入json数据
1.下载解压好curl工具,可以将其加入到系统变量中;
2.在doc命令下进入curl的安装目录下的src中能看到curl.exe命令
3.在此目录下执行:
curl "http://192.168.10.165:8081/solr/json/update?commit=true" --data-binary @json文件地址 -H "Content-type:application/json",执行成功后如下图:
如果执行失败会有错误提示:
json的大致文件内容结构:
{
“add”:{
"doc":{
"id":"001",
"name":"张三",
"hobby":["吃","喝","玩"]
}
"doc":{
"id":"002",
"name":"李四",
"hobby":["吃","喝","玩"]
}
"doc":{
"id":"003",
"name":"王五",
"hobby":["吃","喝","玩"]
}
}
}
对于单值字段与多值字段可以很好的支持,对于类似下面这种属性组:
"comments": [
{
"text": "我是谁",
},
{
"text": "我在哪",
}
]
在json文件中不能直接这么写,solr识别不了,需要改为如下形式:
“comments.0.text”:"我是谁",
“comments.0.text”:"物我在哪"
通过java程序调用curl命令导入json文件到solr索引库:
public static boolean impData(String path){
String url = "\"http://192.168.10.165:8081/solr/json/update?commit=true\" --data-binary @"+path+" -H \"Content-type:application/json;charset=UTF-8\"";
String[] cmds = {"curl",url};
ProcessBuilder pb = new ProcessBuilder(cmds);
pb.redirectErrorStream(true);
Process p;
try {
p = pb.start();
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
其中path为json文件的绝对地址,json文件的格式与上面的一致,自己可以加一些输出语句判断导入数据的条数、所消耗时间等信息。
solr admin 删除索引示例:
根据id删除索引:
<delete><query>id:1</query></delete>
<commit/>
删除所有索引:
<delete><query>*:*</query></delete>
<commit/>
删除成功状态: