java solrJ提交更新索引如何提高效率

两种创建方式

//适用查询
 private static HttpSolrClient getSolrClient(String ip,String coreName){
        String url = "http://" + ip + "" + "/solr/" + coreName;
        HttpSolrClient build = new HttpSolrClient.Builder(url).build();
        return build;
  }
  //适用更新索引
  private static ConcurrentUpdateSolrClient getConcurrentUpdateSolrClient(String ip,String coreName,int queueSize){
       String url = "http://" + ip + "" + "/solr/" + coreName;
       ConcurrentUpdateSolrClient build = new ConcurrentUpdateSolrClient.Builder(url).withQueueSize(queueSize).build();
       return build;
   }

/**
   * 批量上传数据到Solr
   * @param solrIP
   * @param coreName
   * @param docs
   * @return
   */
 public static boolean batchUploadSolrDoc(String solrIP, String coreName,JSONArray docs) throws IOException, SolrServerException {
        //获取solr实例
        ConcurrentUpdateSolrClient solrClient = getConcurrentUpdateSolrClient(solrIP, coreName,1);//效率最高
        //HttpSolrClient solrClient = getSolrClient(solrIP, coreName);//用于查询
        solrClient.setParser(new XMLResponseParser());
        //数据填装(主要的消耗点)
        for (int i = 0,size = docs.size(); i < size; i++) {
            JSONObject v = docs.getJSONObject(i);
            SolrInputDocument solrInputDocument = new SolrInputDocument();
            v.forEach((k,v1)-> solrInputDocument.addField(k,v1));
            solrClient.add(solrInputDocument);
        }
        try {
            UpdateResponse repc = solrClient.commit();
        } catch (Exception e) {
            return false;
        }
        return true;
    }

单论提交更新索引的效率的话基本在4-5倍,左右有兴趣的可以自己测试一下.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值