偶尔会用到solr后台操作一些数据,比如测试等一些情况。但具体用的时候可能会忘记,或者搜的时候结果不全,在此略详细的记一下。
1.添加
{"id":6,"title":"change.me"}
结果:
说明:id为主键
2.更新
{"id":6,"title":{"set":"原子更新"}}
结果:
说明:更新过程是先删除,再添加
3.删除
删除和添加数据不同,内容是一个条件语句,所以要用xml形式
<delete><query>id:6</query></delete>
<commit/>
结果:
4.补充
如果添加的数据里有字段是schema里没有的会报错
{"id":7,"titletitle":"双份更强力"} 报错:"msg": "ERROR: [doc=7] unknown field 'titletitle'",
同理更新的数据里有字段是schema里没有的也会报错。
如果要按时间删除,语句:
<delete><query>update_time:[0 TO 1554100200]</query></delete>
<commit/>
删除update_time(更新时间)小于1554100200的所有数据,如果update_time不存在,不会报错,但没有效果。
最后补充:在工作中遇到一种添加数据情况出错情况,如下
Bad Request\n\n\n\nrequest: http://10.200.3.66:8983/solr/req_all_shard1_replica3/update?update.chain=add-unknown-fields-to-the-schema&update.distrib=TOLEADER&distrib.from=http%3A%2F%2F10.200.3.67%3A8983%2Fsolr%2Freq_all_shard1_replica4%2F&wt=javabin&version=2
情况:只有在这一个solr上发现这个问题,其它solr都是正常的,它这个报错也是报的不清不楚。思索良久之后发现了问题所在
这个solr里的schema字段中required="true"必传字段有两个,少传一个就会报错,泪牛满面。
2019年4月16日