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
- Solr REST操作:增删改查
- Solr索引增删改查
- solr的增删改查
- 增删查改操作
- [Rest]Microsoft Dynamics CRM 2011的JS开发REST操作精简封装,增删改查集合
- solr增删改查,java工程
- Solr的增删改查注意事项
- Solr索引之增删改查
- SimpleJDBCOperator 增删改查操作
- EF操作增删改查
- hibernate 增删改查操作
- Sqlite增删改查操作
- mongo 增删改查操作
- mybatis 增删改查操作
- memcached 增删改查操作
- 数据库操作增删改查
- hbase 增删查改操作
- Hibernate 增删改查操作
- swift设计模式学习一
- 【Linux】UNDERSTANDING LINUX CPU LOAD - WHEN SHOULD YOU BE WORRIED?
- Scrapy性能分析
- Spring源码分析(二)-Spring IoC容器的初始化No.1
- 发布要素服务——ArcGIS Server在线编辑(一)
- Solr REST操作:增删改查
- c++模板
- JS错误处理
- 二叉树——前序和中序得到后序
- 汇编-vcIO.inc
- leetcode-Single Number
- 设计模式:状态模式(State)
- D The Lucky Week
- 浅析C#深拷贝与浅拷贝