初始化连接:
HttpSolrServer server = new HttpSolrServer("http://{ip}:{port}/{collection}"); server.setSoTimeout(3000); server.setConnectionTimeout(3000);
Insert/Update:
SolrInputDocument insert = new SolrInputDocument(); insert.addField("name", "jzp"); server.add(insert); server.commit(true, true);
Delete:
// deleteByQuery server.deleteByQuery("name:jzp"); server.commit(true, true); // deleteById server.deleteById("jzp"); server.commit(true, true);
Query:
SolrQuery query = new SolrQuery(); query.addField("*"); query.setQuery("name:jzp"); QueryResponse response = server.query(query); // 查询返回list SolrDocumentList sdl = response.getResults(); // 查询返回count long count = response.getResults().getNumFound();
Aggregate:
SolrQuery query = new SolrQuery(); // 统计字段 String[] fields = {"name"}; Map<String, Long> map = Maps.newHashMap(); // 利用StatsComponent实现数据库的聚合统计查询,也就是min、max、avg、count、sum的功能 // 是否开启stats(true/false) query.set("stats", true); // 添加统计字段,可以有多个 query.set("stats.field", fields); // 执行查询 QueryResponse response = server.query(query); // 获取执行结果 Map<String, FieldStatsInfo> fieldStatsInfoMap = response.getFieldStatsInfo(); // stats.field字段设置成什么,这里就获取什么 FieldStatsInfo fieldStatsInfo; Long result; for (String field : fields) { fieldStatsInfo = fieldStatsInfoMap.get(field); // sum result = Double.valueOf(fieldStatsInfo.getSum().toString()).longValue(); // max result = Double.valueOf(fieldStatsInfo.getMax().toString()).longValue(); // min result = Double.valueOf(fieldStatsInfo.getMin().toString()).longValue(); // mean result = Double.valueOf(fieldStatsInfo.getMean().toString()).longValue(); map.put(field, result); }
Group:
SolrQuery query = new SolrQuery(); Map<String, Long> result = Maps.newHashMap(); query.setParam(GroupParams.GROUP, true); query.setParam(GroupParams.GROUP_FIELD, "name"); query.setParam(GroupParams.GROUP_LIMIT, "0"); QueryResponse response = server.query(query); GroupResponse groupResponse; List<GroupCommand> groupList; List<Group> groups; if (response != null) { groupResponse = response.getGroupResponse(); if (groupResponse != null) { groupList = groupResponse.getValues(); for (GroupCommand groupCommand : groupList) { groups = groupCommand.getValues(); for (Group group : groups) { result.put(group.getGroupValue(), group.getResult().getNumFound()); } } } }
Solrj常用操作
最新推荐文章于 2020-04-02 16:14:16 发布