Solr REST操作:增删改查

来源:互联网 发布:淘宝点点外卖 编辑:程序博客网 时间:2024/06/05 02:39

     在使用solr时,对solr进行操作可以solr4j直接操作,但在对solr multicore进行操作时(如数据库分表)有些不方便,因此尝试了直接采用REST形式进行操作

public class SolrServiceImpl implements SolrService {    @Override    public boolean addIndex(List<Program> list) {         JSONArray array = new JSONArray();        for (Program p : list) {            JSONObject object = new JSONObject();            object.put("id", p.getId());            object.put("name", p.getName());            array.add(object);        }        String result = HttpUtils.httpPost("http://localhost:8080/solr/update?commit=true", array.toString());        JSONObject resultObj = JSON.parseObject(result);        int status = resultObj.getJSONObject("responseHeader").getIntValue("status");        return status == 0;    }    @Override    public boolean addIndex(Program program) {        List<Program> list = new ArrayList<>();        list.add(program);        return addIndex(list);    }    @Override    public boolean updateIndexById(Program program) {        List<Program> list = new ArrayList<>();        list.add(program);        return addIndex(list);    }    @Override    public boolean deleteIndex(long id) {        //{"delete":[ {"id":"3"}}        JSONObject idObj = new JSONObject();        idObj.put("id", id);        JSONObject delObj = new JSONObject();        delObj.put("delete", idObj);        String result = HttpUtils.httpPost("http://localhost:8080/solr/update?commit=true", delObj.toString());        JSONObject resultObj = JSON.parseObject(result);        int status = resultObj.getJSONObject("responseHeader").getIntValue("status");        return status == 0;    }    @Override    public SolrResult select(List<Integer> websiteIds, String keyword, int start, int num) {        SolrResult solrResult = new SolrResult();        String result = HttpUtils.httpGet("http://localhost:8080/solr/select?q=*:*&wt=json&start"+start+"&rows="+num);        if (StringUtils.isNotEmpty(result)) {            JSONObject jsonObject = JSON.parseObject(result);            JSONObject respObj = jsonObject.getJSONObject("response");            if (respObj != null) {                int totals = respObj.getIntValue("numFound");                solrResult.setTotalCount(totals);                JSONArray docsArr = respObj.getJSONArray("docs");                int size = docsArr.size();                List<Program> programList = new ArrayList<>();                for (int index = 0; index < size; index++) {                    JSONObject docObj = docsArr.getJSONObject(index);                    Program program = new Program();                    program.setPname(docObj.getString("name"));                    program.setId(docObj.getLongValue("id"));                    programList.add(program);                }                solrResult.setProgramList(programList);            }        }        return solrResult;    }}

 

如果需要进行关联多核进行查询时,可以采用如下形式:

http://localhost:8080/solr/core_1/select?shards=http://localhost:8080/solr/core_0,http://localhost:8080/solr/core_1&wt=json&q=%E4%BA%86&start=0&rows=10


0 0
原创粉丝点击